有没有一种标准的方法可以在 python2 和 python3 之间切换作为默认 python,类似于 virtualenv 可以用来在不同的沙盒 python 环境之间切换?
我想避免手动摆弄符号链接和 PATH 变量,以便解决方案是可移植的。
由于它是关于切换 python 版本,因此该解决方案最好不要用 python 编写,而是用 bash 或可移植的东西编写。
有没有一种标准的方法可以在 python2 和 python3 之间切换作为默认 python,类似于 virtualenv 可以用来在不同的沙盒 python 环境之间切换?
我想避免手动摆弄符号链接和 PATH 变量,以便解决方案是可移植的。
由于它是关于切换 python 版本,因此该解决方案最好不要用 python 编写,而是用 bash 或可移植的东西编写。
这向我们展示了如何使用update-alternatives
和/或使用别名~./bashrc
:alias python=/usr/local/bin/python2.7
我猜您是在谈论在 Windows 下使用 Python,因为您提到了 PATH 变量。最新版本的 Python3 附带所谓的 Python 启动器。您可以运行py -2
以启动 Python2 解释器和py -3
启动 Python3 解释器。我希望这回答了你的问题。
经过更多研究,看起来一个可能的解决方案可能是pyenv使用pyenv 教程 中描述的用法,但它只识别单个系统范围的 python 运行时(以目前的默认值为准),并且不提供选项在系统范围的 python2 和 python3 之间切换。
看起来 pyenv 只能在系统 python 和通过 pyenv 显式安装的任何版本之间切换,这些版本都可以通过pyenv install --list
eg 看到和安装pyenv install 3.5.2
。也就是说,python3 必须通过 pyenv 安装,才能在 2 和 3 之间切换。
Pyenv 可以与 virtualenv 集成,这对于开发测试来说很方便,因为它包括所有版本的 anaconda、miniconda、pypy、jython、stackless 等。这可能是安装多个版本的 python 的最简单方法,这些版本不随包管理器一起提供,即在其存储库中没有现代 python 的较旧的 Linux 发行版上。
但从长远来看,考虑到所有因素,我发现metatoaster提出的解决方案更简单,完全符合我的要求,因为我可以使用 python2 virtualenv 创建 python2 和 python3 环境而无需任何开销:
python -V
Python 2.7.12
mkdir -p ~/.virtualenvs && cd ~/.virtualenvs
virtualenv -p /usr/bin/python3 mypy3env
workon mypy3env
python -V
>>> Python 3.5.2