须藤:蟒蛇:找不到命令

Phl*_*das 7 python linux ubuntu

我想sudo python找到 Python 3。

我有一个奇怪的问题,在终端中,输入python --version给出了 3.6 但sudo python --version给出了 2.7。在尝试了几件事之后,我终于用sudo apt-get purge python2*. 那正确删除了所有内容。尽管如此,我还是sudo python找不到 Python 3。

我试过改变我的/root/.bashrc

export PATH="/home/username/anaconda3/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

alias python="/home/username/anaconda3/bin/python"
Run Code Online (Sandbox Code Playgroud)

我也放了相同的行~/.bashrc

etc/sudoers有这条线:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"/usr/bin:$
Run Code Online (Sandbox Code Playgroud)

我打开了新终端,甚至重新启动了计算机。任何想法如何sudo python只找到 Python 3?我不想要单个会话修复,而是每次使用终端时都会起作用的东西。

谢谢

小智 14

如果你不想修改 bashrc,你可以这样做: sudo env "PATH=$PATH" python something


Cha*_*ffy 12

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

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

psudo() { sudo env PATH="$PATH" "$@"; } 
Run Code Online (Sandbox Code Playgroud)

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


如果你真的想覆盖sudo命令本身,那也是可行的:

sudo() { command sudo env PATH="$PATH" "$@"; } 
Run Code Online (Sandbox Code Playgroud)

command内建防止功能从递归(调用本身)。