【问题标题】:Switching between python2 and python3 as the default python在 python2 和 python3 之间切换作为默认 python
【发布时间】:2017-02-08 20:08:08
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您必须使用virtualenv -p /usr/bin/python2 env2virtualenv -p /usr/bin/python3 env3 创建虚拟环境,自然它们将是您必须为其安装依赖项的独立环境。
  • @metatoaster:这是一个有趣的可能性——这是否意味着例如为 Python 2 安装的virtualenv 可用于创建 Python 3 环境(反之亦然)?在这种情况下,重要的仅仅是可执行文件吗?

标签: python python-3.x virtualenv python-2.x pyenv


【解决方案1】:

This 向我们展示了如何使用update-alternatives 和/或在~./bashrc 中使用别名:alias python=/usr/local/bin/python2.7

【讨论】:

  • 这肯定是基于 Debian 的 Linuces 的答案,但不包括 OSX 和非 Debian Linux 系统..
  • 链接不是答案,请将链接的相关部分添加到您的答案中。
  • 如果您选择进行更多调查,该链接可提供额外信息,即,有时我们都可以使用一些手把手。我的回答是:使用 update-alternatives 和/或在 ~./bashrc 中使用别名,例如 alias python=/usr/local/bin/python2.7 如果该答案对您不满意,请随意投反对票。如果您对我的回答有任何疑问,请随时提出。
【解决方案2】:

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

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

conda create -n new_environment python=3.5

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

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

【讨论】:

  • 一种有趣的方法,但似乎不是很轻量级。
  • @ccpizza 你是说 Conda 还是 Miniconda? Miniconda 不是重量级的,它允许您完全控制要在任何虚拟环境中使用的 Python 版本,即使不需要在系统中安装该版本。
  • 我查看了 miniconda:它安装了一个单独的 python 运行时。我正在寻找一种在现有运行时之间切换的简单工具。
【解决方案3】:

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

【讨论】:

  • Linux 也使用 $PATH 环境变量。另一方面,Windows 默认没有 bash 或符号链接,AFAIK,所以我的猜测是 OP 在 Linux 上。
  • @flcoder:是的,我正在寻找 osx/linux 解决方案,基于 bash 或 c。
【解决方案4】:

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

看起来 pyenv 只能在系统 python 和通过 pyenv 显式安装的任何版本之间切换,这些版本都可以通过pyenv install --list 看到并安装例如pyenv install 3.5.2。也就是说,python3必须通过pyenv安装,才能在2和3之间切换。

Pyenv can integrate with 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 2021-12-09
    • 2015-06-17
    • 2018-03-09
    • 2022-08-05
    相关资源
    最近更新 更多