0

有没有一种标准的方法可以在 python2 和 python3 之间切换作为默认 python,类似于 virtualenv 可以用来在不同的沙盒 python 环境之间切换?

我想避免手动摆弄符号链接和 PATH 变量,以便解决方案是可移植的。

由于它是关于切换 python 版本,因此该解决方案最好不要用 python 编写,而是用 bash 或可移植的东西编写。

理想情况下,我想为 nodejs 找到类似于nvm或为 Ruby找到rbenv的东西。

4

4 回答 4

1

向我们展示了如何使用update-alternatives和/或使用别名~./bashrcalias python=/usr/local/bin/python2.7

于 2016-09-30T09:44:02.550 回答
1

有一种方法,叫做Conda(你可以先安装Miniconda)。

它允许您创建虚拟环境,您可以在其中指定要使用的 Python 解释器版本。例如:

conda create -n new_environment python=3.5

Conda 将为您下载解释器,因此您无需在系统中使用它。

除此之外,您可以安装包而不需要编译它们(以防它们不是完全用 Python 编写的),如果您在 Windows 上,这特别方便。因此,例如,conda install numpy matplotlib将不需要您编译任何这些包。

于 2016-09-30T09:48:09.067 回答
0

我猜您是在谈论在 Windows 下使用 Python,因为您提到了 PATH 变量。最新版本的 Python3 附带所谓的 Python 启动器。您可以运行py -2以启动 Python2 解释器和py -3启动 Python3 解释器。我希望这回答了你的问题。

于 2016-09-30T09:43:15.097 回答
0

经过更多研究,看起来一个可能的解决方案可能是pyenv使用pyenv 教程 中描述的用法,它只识别单个系统范围的 python 运行时(以目前的默认值为准),并且不提供选项在系统范围的 python2 和 python3 之间切换。

看起来 pyenv 只能在系统 python 和通过 pyenv 显式安装的任何版本之间切换,这些版本都可以通过pyenv install --listeg 看到和安装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
于 2016-10-01T09:23:16.373 回答