python - 须藤 : python: command not found

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

谢谢

最佳答案

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

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

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

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


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

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

内置的 command 可防止函数递归(调用自身)。

关于python - 须藤 : python: command not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44726377/

相关文章:

javascript - Python Flask 每 60 秒刷新一次表

linux - 如何在 Unix/Linux 消息队列中设置基于 ssl 的通信?

linux - ubuntu上仍然无法安装pygame

linux - 如何使用 shell 脚本将单词转换为字符

python - 如何添加/替换/删除字符串中的转义字符 - Python

python - 如何将 python 类型注释添加到 flask 全局上下文 g?

linux - 从运行中获取变量?

android - 在 ubuntu 中找不到 gradlew.bat

python - 为分类变量 sklearn 创建我的自定义输入器

在 Linux/UNIX 上用纯 C 递归复制目录