如何在sudo状态中更改python路径?

时间:2012-03-07 01:05:14

标签: python bash sudo pythonpath

我的问题是,当我这样做时:

$ python =>我把/ a / b / c / python作为我的目录

但如果我这样做 $ sudo哪个python =>我得到/ d / e / python作为结果

如何更改sudo以匹配正常情况,这使得无法从源代码安装库。

3 个答案:

答案 0 :(得分:0)

它使用$ PATH中找到的第一个

尝试做

echo $PATH

然后

sudo bash -c 'echo $PATH'

我敢打赌这些是不同的。

在任何情况下,对于你在/ root和当前用户中使用的shell,通常都会有某种类型的rc脚本,只需重新排列环境变量中的路径即可。

答案 1 :(得分:0)

我会先试试这个:

sudo -i which python

(间接)导致root用户的配置文件运行,包括路径的任何非默认配置。 (默认情况下,sudo不会对此感到烦恼。)

如果这不起作用,则会告诉您/usr/local/bin不在root用户个人资料设置的路径中(或者不在/usr/bin之前),所以您可以选择更改root用户的个人资料并使用上述内容,或者使用:

sudo -E which python

保留您的路径(以及您的其他环境)。这可能不太安全。

有关每个选项的完整详情,请参阅the sudo man-page

答案 2 :(得分:0)

根据https://askubuntu.com/questions/477987/two-python-distributions-sudo-picking-the-wrong-one,这是secure_path(在/ etc / sudoers中指定)覆盖正常PATH的结果。

通过提供我想要运行的二进制文件路径的路径,我已经解决了这个问题。例如:

$ which pip
/opt/local/bin/pip
$ sudo /opt/local/bin/pip install foo

它并不理想,但它有效并且不会破坏secure_path。