两个 Python 发行版,sudo 选错了

两个 Python 发行版,sudo 选错了

经过 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调用。

相关内容