我正在使用的Linux版本默认使用python 2.6,我们在一个单独的文件夹中安装了2.7。
如果我想运行.py脚本,如何告诉它使用2.7而不是默认值?
答案 0 :(得分:2)
使用update-alternatives --config python
并在选项中显示python2.7
如果您需要将其删除,请使用update-alternatives --remove python /usr/bin/python2.7
。
答案 1 :(得分:2)
抱歉"偷窃"答案,但我觉得这里有一点点混乱。
有不同的方法可以实现这一目标,这取决于决策的级别。
[感谢@WoLy]
使用系统的update-alternatives
功能。具体来说,使用
$ update-alternatives --config python
您可以选择特定版本。
结果:完成此操作后,所有使用" python
"将使用python2.7
二进制文件。对于所有用户,这将在整个系统中发生。
这有点棘手。归功于@TheFlyingProgrammer
基本方法是更改.bashrc
文件以更改路径和/或添加别名。问题是,如果你依赖" shebang"文件:
#!/usr/bin/python
<code python here>
此类文件不受您的更改影响。但是:
#!/usr/bin/env python
<code python here>
或执行
$ python name_of_script.py
将使用选择的解释器(强制在.bashrc
文件中的解释器。)
结果:默认情况下,修改后的.bashrc
文件的所有者将使用所选的解释器。但有些镜头表现不同。所以它有点棘手。所以,要小心。
[感谢@ Anony-Mousse]
&#34; shebang&#34;方法,修改第一行。这个想法是在python源文件的第一行使用完整路径:
#!/usr/bin/python2.7
<code python here>
您可以使用python
,python2
或python2.7
,您或多或少会在版本中具体说明。问题是如果你想要它是便携式的。类似的方法是使用完整的版本规范,但没有路径:
#!/usr/bin/env python2.7
<code python here>
请注意,如果未正确设置PATH
,则无法正常工作。这为用户提供了一些功能(设置PATH
时)。例如,您可以选择#!/usr/bin/env python2
来强制使用某些Python 2.x风格,但是特定的二进制文件可能会在用户之间发生变化。
除此之外,请注意,如果您打算使用虚拟环境,建议使用/usr/bin/env python
(如果我没有弄错的话)。
结果:嗯,这取决于您是否使用env
二进制文件。但是,在任何情况下,您都将语义放在文件中,这在许多情况下是有意义的(例如,如果存在不兼容性,则它在脚本级别)。
[来自@Prune]
这是最简单的方法:
$ /path/to/your/python/bin/python2.7 my_script.py
对于此特定执行,您更改将使用哪个二进制文件(Python解释器忽略shebang,因为它是注释)。
结果:您可以通过挑选Python二进制文件来覆盖所有其他选项。非常好的测试行为方法,但不是很易维护或可共享。
答案 2 :(得分:1)
如果您需要特定版本,使用完整路径。
如果您有例如安装了python2.7和python3.4(这很常见,因为它们不完全兼容):
带
的脚本#!/usr/bin/python
由于比较原因, 通常会运行最新版本的python2。 **你应该避免覆盖/usr/bin/python
指向的内容,以免破坏你的系统。某些应用会要求此指向兼容的版本。
相反,请使用
#!/usr/bin/python3
使用最新的python 3
#!/usr/bin/python2.7
要求python2.7
如果您手动安装了python(为什么?使用软件包,因为自动升级会更智能),然后使用完整路径!
~/my-python/bin/python myscript.py
或者如果你用shebang开始你的脚本:
#!/home/whatever/my-python/bin/python
所以你可以+x
你的脚本,只需
./myscript.py
如果您懒得输入,请或自己制作别名,例如py
。
答案 3 :(得分:0)
使用文本编辑器打开~/.bashrc
,然后添加alias python=/usr/local/bin/python2.7
如果您使用Cent OS作为Linux发行版,您会注意到这一点
sudo python <file.py>
不起作用。这是因为sudo没有/usr/local/bin
作为安全路径。使用文本编辑器打开/etc/sudoers
,您应该看到
#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults env_keep += "HOME"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
将:/usr/local/bin
添加到该secure_path并保存。