在archlinux上管理多个Python版本的正确方法
我看了这个 - https://wiki.archlinux.org/index.php/Python
从这个维基上可以清楚地看到,我可以通过
pacman -S python2
来安装 Python 2.7.2。
我是否可以合理地创建一个指向 python2 的符号链接
ln -s python2 /usr/bin/python
如果我不打算很快切换到 python 3.0?或者有没有更好的方法来管理多个 Python 版本,就像我在 Debian 系统上通常使用的(update-alternatives --config python)或在 Mac OS X 系统上使用的(python select)那样?
澄清一下:
- 我想知道的是 - 在 Arch Linux 系统上管理不同 Python 版本的“最佳实践”是什么?
- 我对 Arch Linux 还很陌生,但对 Ubuntu、Debian 和 Mac OS X 比较熟悉。
7 个回答
在GitHub上有一个很不错的项目,叫做 pyenv。这个工具可以帮助你管理多个Python版本。
我认为你根本不应该这样创建任何符号链接。特别是如果你打算分发一些你的Python代码,你不能假设用户的电脑上在/usr/bin/python这个位置有python2或python3。
如果你的脚本需要python2,直接使用:
#!/usr/bin/env python2
如果你的脚本需要python3,使用:
#!/usr/bin/env python3
这样做的话,即使Python更新了,你的脚本也能正常工作。而且这样会更清楚地说明你的脚本实际上需要哪个版本。
大多数Unix系统里都有一个叫做/usr/bin/python的文件。把这个文件覆盖掉是不明智的,因为这是系统中所有软件包使用的Python版本,改动它可能会导致这些软件包出问题。当你安装Python 2.7的时候,应该把可执行文件放在/usr/bin/python2.7(如果没有这样做,我会说Archlinux有问题),所以想运行Python 2.7的时候最好用这个路径。
Archlinux有点特别,因为它把/usr/bin/python用作Python 3,尽管Python 3的默认可执行文件名是/usr/bin/python3。这让人感到困惑,可能被认为是个bug,但这也意味着你不能把这个链接用来指向Python 2,因为任何其他使用Python 3的Archlinux脚本几乎肯定会因为这样而出错。
所以在其他Unix系统中,把/usr/bin/python链接到Python 2.7是个坏主意,而在Archlinux上这简直是个糟糕的主意。与其这样,不如安装你需要的所有版本,然后用/usr/bin/pythonX.X来调用它们。