sudo:python:找不到命令

时间:2017-06-23 16:46:58

标签: python linux ubuntu

我想让sudo python找到Python 3。

我有一个奇怪的问题,在终端中,键入python --version给出了3.6但sudo python --version给出了2.7。在尝试了一些事情后,我终于用sudo apt-get purge python2*卸载了2.7。这正确地删除了一切。不过,我无法让sudo python找到Python 3。

我已尝试将/root/.bashrc更改为:

export PATH="/home/username/anaconda3/bin:$PATH"

alias python="/home/username/anaconda3/bin/python"

我也在~/.bashrc中添加了相同的行。

我的etc/sudoers有这一行:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"/usr/bin:$

我打开了新的终端,甚至重新启动了计算机。任何想法如何使sudo python只找到Python 3?我不希望单个会话修复,但每次使用终端时都会有效。

由于

3 个答案:

答案 0 :(得分:2)

如果您不想修改bashrc,则始终可以执行以下操作: sudo env "PATH=$PATH" python something

答案 1 :(得分:1)

您的/etc/sudoers已明确配置为使用已知的安全路径覆盖您的用户路径。

也就是说,如果你想要始终通过用户的PATH路径,你可以轻松地使用一个能够执行此操作的函数覆盖sudo(安装在~/.bashrc或类似的代码中以使其持久化):

psudo() { sudo env PATH="$PATH" "$@"; } 

此后,psudo python将使用与PATH中相同的python解释器。

如果确实想要覆盖sudo命令本身,那也是可行的:

sudo() { command sudo env PATH="$PATH" "$@"; } 

command内置函数阻止函数递归(调用自身)。

答案 2 :(得分:1)

...其他方法。

当我到达这篇文章时,我只是想跑步:

python -m spylon_kernel install

当我运行上面的命令时,我收到一条消息,告诉我除了键入的内容外,还要使用sudo,例如

sudo python -m spylon_kernel install

当我这样做时,我从控制台收到了“ sudo:python:命令未找到”消息,并添加了-user ,例如:

python -m spylon_kernel install --user

足以完成它。

  

请注意,我在上一个命令中没有使用sudo命令。