sud不提供Python

2024-04-25 18:17:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Google云计算环境中安装了Anaconda,可以作为普通用户在shell中成功使用它:

curt@lamp-v5mi:~$ python
Python 2.7.9 |Anaconda 2.2.0 (64-bit)| (default, Mar  9 2015, 16:20:48) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org

但是,当我通过sudo python启动一个解释器时,anaconda不是所使用的解释器,我希望它是。

curt@lamp-v5mi:~$ sudo python
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

令人困惑的是,当我以root启动shell,然后启动解释器时,anaconda就是所使用的解释器。

curt@lamp-v5mi:~$ sudo -s
root@lamp-v5mi:/home/curt# python
Python 2.7.9 |Anaconda 2.2.0 (64-bit)| (default, Mar  9 2015, 16:20:48) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org

我在根帐户和普通帐户的.bashrc文件中都有export PATH="/anaconda/bin:$PATH"。起初,我认为问题是sudo python实际上没有启动根shell,因此export PATH="/anaconda/bin:$PATH"实际上没有完成。但从我的正常账户来看,我确实看到了水蟒:

curt@lamp-v5mi:~$ sudo echo $PATH
/anaconda/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

anaconda安装是以根用户身份安装在/anaconda中的,我做了一个chmod -R 770 /anaconda让普通用户可以访问它,但我认为这个问题与此无关。

从命令行运行时,如何使anaconda成为默认解释器?


Tags: pathdefaultbinonusrsudoanacondashell
1条回答
网友
1楼 · 发布于 2024-04-25 18:17:50

你几乎什么都做对了。唯一的错误是sudo echo $PATH,其中$PATH在发送到sudo之前被替换,因此显示的是您的用户路径而不是您的“sudoed”路径。

注意,您的sudo实现和配置可能会更改PATH变量,因为我可以在“man sudo”中阅读(可以在Internet上找到,因为我没有sudo):

PATH
    May be overridden by the security policy.

所以,在你的“sudoed”环境中,可能没有/anaconda/bin/

您可以使用sudo env | grep PATH对此进行测试。

要允许或更改sudoed环境中的PATH环境变量,我只能将您指向man sudo,再次声明:我不是sudo用户。

我唯一能让你放弃的是sudo $(which python),就像sudo echo $PATH,用户将执行$(which python),结果是/anaconda/bin/python,所以实际运行sudo /anaconda/bin/python,这是另一个“解决方案”。

最后,我应该警告您,您可能不想将Python作为根运行,几乎没有有效的理由这样做,所以您的问题可能是一个XY问题:您遇到了第一个问题,您自己得出结论:可以通过将Python作为根运行来解决它,您尝试了sudo,但被sudo更改了PATH击中,然后把你的“二级”问题贴在这里。你的“真正问题”是什么?触发“哼,我应该试试sudo”的那个?

相关问题 更多 >