使用python2和python3创建一个virtualenv

20

我尝试使用virtualenvwrapper创建一个包含python2和python3的虚拟环境。

根据virtualenv with python2 and python3 via Homebrew,我希望以下命令可以实现:

(虚拟环境的名称为“double”)

mkvirtualenv double -p `which python`
mkvirtualenv double -p `which python3`

它提到

Not overwriting existing python script both/bin/python (you must use both/bin/python3.4)

但事实似乎并非如此。输入 pythonpython2.7python3python3.4,均会启动 python3.4 解释器。


8
你通过这样做想要达到什么目的?虚拟环境的一个主要好处是将Python 2和Python 3隔离开来,使它们成为独立的世界。 - Kevin
1
我正在开发一个可以在python2和python3中运行的项目。我不想一直切换虚拟环境。由于python2和python3有各自的pip版本并将site-packages存储在不同的位置,所以我认为这不是问题。 - Zweedeend
6
如果目的是为了测试项目,建议使用tox来运行Python 2和3的测试。否则,我建议在Python 3.x中进行开发,并在Python 2中单独运行。这里提到的所有工具都是基于每个虚拟环境一个Python的开发,所以虽然一开始可能看起来可以工作,但不能保证它会继续工作。 - Simeon Visser
3
我相当确定virtualenv没有提供这种保证,因为根据定义,virtualenv是为一个Python解释器版本创建的隔离环境。为每个你想在上面测试的Python解释器版本创建一个虚拟环境。如果你需要在多个解释器上运行,可以在virtualenv的上一层进行处理,比如运行测试的脚本(我们称其为test.sh)。 - Mikko Ohtamaa
5个回答

26

抱歉,virtualenv 旨在支持单个解释器版本。

如果您需要在同一代码库中使用多个 Python 版本,请创建单独的虚拟环境。


13

virtualenv 不支持多个解释器版本。我的建议是为每个版本使用不同的环境:

virtualenv -p /usr/bin/python3.3 py3env
virtualenv -p /usr/bin/python py2env

5

virtualenv能够帮助你隔离环境。

但它无法同时支持多个Python版本。你可以尝试使用pyenvpyenv-virtualenv。它可以支持你在不同的Python版本和工作环境之间切换,并且切换非常方便。

如果你无法在Mac上安装pyenv并想要进行工作,可以使用anyenv来安装pyenv

示例:

$ pyenv install 3.4.1
$ pyenv install 2.7.6
$ pyenv virtualenv 3.4.1 mypy3
$ pyenv virtualenv 2.7.6 mypy2
$ pyenv versions
  * system
    3.4.1
    2.7.6
    mypy3

$ cd /work/
$ pyenv local mypy3      # Use Py3 now
$ pyenv local mypy2      # Use Py2 now 

0

我有一个解决方案,涉及到Vagrant/VirtualBox...(它包含了我的引导设置,用于启动Django项目,但你可以fork它并自由地使用!)

这个软件包在这里,https://github.com/andrewyoung1991/python-3.4.1-vagrant-bootstrap.git 不幸的是,虚拟环境只支持单一Python版本,但是通过VirtualBox,你可以在沙盒中自由地调用Python2或Python3。


0
virtualenv -p /path/to/your/python/version/exectuable ENV

你想要的。 (我知道这是一个旧问题,但我现在来看了一下,发现答案没有更新)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接