sudo python runs old python version(sudo python 运行旧的python版本)
问题描述
我已经按照这些说明在 CentOS 6 上安装了 python 2.7.3
I have installed python 2.7.3 on CentOS 6 with thse instructions
http://villaroad.com/2010/10/rolling-python-2-6-2-on-centos-5-3/
我已经为新 python 的 root 和 myuser 的 bash_profile 添加了别名.现在,当我将 python 写入 shell 时,它可以从两个用户正确运行 python2.7.3.
I have added aliases to bash_profile of both root and myuser for new python. Now when I write python to shell, it runs python2.7.3 correctly from both users.
但是,如果我写 sudo python 它仍然运行旧版本 python2.6.6
However, if I write sudo python it stills runs old version python2.6.6
可能是什么问题?
推荐答案
sudo
不使用你的 shell 来运行命令,它只是 exec
直接执行命令.这意味着 (a) 没有任何源代码来自 root 的 bash_profile
,因此放在那里的内容无关紧要,并且 (b) 即使设置了 shell 别名也无关紧要.
sudo
doesn't use your shell to run commands, it just exec
s the command directly. This means (a) there's nothing that sources root's bash_profile
, so it doesn't matter what you put there, and (b) shell aliases wouldn't matter even if they were set.
因此,如果您想使用 alias
es 指定与 PATH 中的 Python 不同的 Python,则不能使用 sudo python
来运行相同的 Python一个.
So, if you want to use alias
es to specify a different python than the one that's on your PATH, you can't use sudo python
to run that same one.
最简单,也可能是最安全的修复方法是明确的:运行 sudo/path/to/other/python
.如果您需要经常这样做,您可以随时为其创建别名.
The easiest, and probably safest, fix is to be explicit: run sudo /path/to/other/python
. If you need to do this often enough, you can always create an alias for that.
如果你真的想要,可以让 sudo
使用 shell.显式生成运行 python
的 bash
命令行,或者(更简单地)只使用 -s
或 -i代码>标志.(在这种情况下,如果你试图让 root 的
~/.bash_profile
运行,-s
不会这样做,但 -i
会.)但是 sudo
执行 shell 不如 sudo
执行程序安全.您的 sudoers
甚至可能被显式配置为阻止您这样做.(如果你愿意,你可以用 visudo
来解决这个问题,但是在不确切了解你正在打开什么的情况下打开一个安全漏洞通常被认为是一件坏事.)
If you really want to, you can make sudo
use a shell. Either explicitly generate the bash
command line that runs python
, or (more simply) just use the -s
or -i
flags. (In this case, if you're trying to get root's ~/.bash_profile
run, -s
won't do it, but -i
will.) But sudo
ing shells is not as safe as sudo
ing programs. Your sudoers
may even be explicitly configured to prevent you from doing it. (You can fix that with visudo
if you want, but opening a security hole without understanding exactly what you're opening is generally considered a bad thing to do.)
这篇关于sudo python 运行旧的python版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:sudo python 运行旧的python版本
基础教程推荐
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 筛选NumPy数组 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01