![两个 Python 发行版,sudo 选错了](https://linux22.com/image/1082940/%E4%B8%A4%E4%B8%AA%20Python%20%E5%8F%91%E8%A1%8C%E7%89%88%EF%BC%8Csudo%20%E9%80%89%E9%94%99%E4%BA%86.png)
经过 10 多年的禁欲后,我又回到了 Linux(我以为是骗人的)。在系统管理部门有点生疏了。
我的 Python 发行版出现了问题。我使用的是 Python 2.7,但基于 Anaconda 版本。我遵循了标准指南,但最近我发现了一个问题,我不知道如何修复。
在 下sudo
,提供了 Ubuntu 自带的标准 Python。在我的用户帐户下,python 指向 Anaconda 版本:
dhk@localhost:~/home/$which python
/opt/anaconda/bin/python
dhk@localhost:~/home/$sudo which python
/usr/bin/python
这是一个问题,因为使用sudo pip [anything]
通常会对错误的目录进行操作,但如果没有 sudo 我就无法使用它。
答案1
Sudoers 指定secure_path
:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
这将覆盖您的本地 PATH,因此您的虚拟环境不会被使用。您有以下几种选择:
- 明确调用你的 Python 二进制文件:
sudo /opt/anaconda/bin/python file.py
- 注释掉该
secure_path
行/etc/sudoers
(但它存在可能有原因) keep_env
针对该特定命令指定(尽管这可能与上面的问题类似)。
做不是将您的 Python 路径添加到,secure_path
因为这可能会搞砸多个标准sudo
调用。