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”的那个?
我在 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”的那个?