我想让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?我不想要一个单一的会话修复,但每次我使用终端时都会工作。
谢啦,谢啦
5条答案
按热度按时间pepwfjgg1#
您的
/etc/sudoers
被显式配置为使用已知的安全路径覆盖您的用户路径。也就是说,如果你想让用户的PATH路径一直通过,你可以很容易地用一个函数覆盖
sudo
,这个函数可以做到这一点(安装在你的~/.bashrc
或类似的东西中,使它持久化):此后,
psudo python
将使用PATH中的相同python
解释器。如果您 * 真的 * 想覆盖
sudo
命令本身,这也是可行的:command
内置函数防止函数递归(调用自身)。snvhrwxg2#
如果你不想修改你的bashrc,你可以这样做:第一个月
hgncfbus3#
...其他方法。
当我看到这个帖子时,我只是想跑步:
第一个月
当我运行上面的命令时,我收到一条消息,告诉我除了输入的内容之外,还要使用
sudo
,例如sudo python -m spylon_kernel install
当我这么做的时候,我得到了"sudo:python:未找到命令 *'消息,并添加 --user,例如:
python -m spylon_kernel install --user
就足以完成它。
请注意,我没有在最后一个命令中使用
sudo
命令。a1o7rhls4#
公认的答案是建议设置函数来复制或替换
sudo
,新的Linux用户可能会发现语法很复杂。有一个更简单的方法...
用户具有miniconda 3 python环境:
sudo
看不到python:只需使用“which python”代替“python”即可!
这允许shell解释器将
sudo
命令中的“python”替换为“/home/user/miniconda 3/bin/python”。或者,设置一个环境变量,比如
PY
为 always use来代替python
-这样做的好处是可以在shell脚本中使用:注意:
sudo
与--preserve-env=PATH
是有吸引力的,但不起作用,因为sudo
使用/etc/sudoers
中的secure_path
来查找可执行文件,* 而不是 * $PATH。ccrfmcuu5#
如果已经安装了python 3.x,请尝试以下代码