Anaconda python 无法从 sudo 获得

Anaconda python not available from sudo

我在 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

我在 root 和普通帐户的 .bashrc 文件中都有 export PATH="/anaconda/bin:$PATH"。起初我认为问题是 sudo python 实际上没有启动根 shell,因此 export PATH="/anaconda/bin:$PATH" 实际上没有完成。但是,当我从我的普通帐户中执行 sudo echo $PATH 时,它会在其中显示 anaconda:

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

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

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

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

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

PATH
    May be overridden by the security policy.

因此,在您的“sudoed”PATH 中,可能没有 /anaconda/bin/

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

要在您的 sudo 环境中允许或更改 PATH 环境变量,我只能将您定向到您的 man sudo,再说一遍:我不是 sudo 用户。

我唯一可以放弃你的是sudo $(which python),如sudo echo $PATH$(which python)将由你的用户执行,导致/anaconda/bin/python,所以实际上运行ning sudo /anaconda/bin/python 这是另一个“解决方案”。

总而言之,我应该警告你,你可能不想 运行 Python 作为 root,几乎没有正当理由这样做,所以你的问题可能是 XY问题:你遇到了第一个问题,你自己得出结论,它可以通过 运行ning Python 作为 root 来解决,你尝试了 sudo,被 sudo 改变了你的 PATH,然后发布了你的这里的“第二级”问题。你的“真正问题”是什么?触发“嗯,我应该尝试使用 sudo”的那个?