sudo:python:找不到命令

新手上路,请多包涵

我想让 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?我不想要单个会话修复,而是每次使用终端时都会起作用的东西。

谢谢

原文由 Phlox Midas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

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

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

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

此后, psudo python 将使用相同的 python 可以在路径中找到的解释器。


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

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

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

原文由 Charles Duffy 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 thd 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题