如何选择我在Linux上运行的python版本?

时间:2016-01-27 20:48:20

标签: python linux

我正在使用的Linux版本默认使用python 2.6,我们在一个单独的文件夹中安装了2.7。

如果我想运行.py脚本,如何告诉它使用2.7而不是默认值?

4 个答案:

答案 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>

您可以使用pythonpython2python2.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并保存。