在Windows上使用VirtualEnv与多个Python版本

23

我在我的机器上拥有Python 2.7.6和3.4.0版本,其中2.7版本已经加入了环境变量。我想设置一个使用3.4版本的虚拟环境。有很多帖子在Stack Overflow和其他地方建议我在命令提示符下执行以下操作:

virtualenv -p c:\python34 myvirtualenv

但这对于我没有用。控制台会话具有管理员特权并且UAC已关闭,但是我遇到了权限问题:

F:\virtualenv>virtualenv -p c:\python34 myenv
Running virtualenv with interpreter c:\python34
Traceback (most recent call last):
  File "c:\python27\scripts\virtualenv-script.py", line 9, in <module>
    load_entry_point('virtualenv==1.11', 'console_scripts', 'virtualenv')()
  File "C:\Python27\lib\site-packages\virtualenv.py", line 779, in main
    popen = subprocess.Popen([interpreter, file] + sys.argv[1:], env=env)
  File "C:\Python27\lib\subprocess.py", line 709, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 957, in _execute_child
    startupinfo)
WindowsError: [Error 5] Access is denied

我还尝试着明确指定 virtualenv 的3.4版本,但如果不改变路径,它会执行混合了 2.7 和 3.4 版本Python文件的杂烩。

我所找到的唯一建立虚拟环境的方法是将路径更改为3.4,运行virtualenv,然后将路径重置为2.7,这违背了virtualenv的Python切换的初衷。

谢谢

6个回答

51

更好:

py -3.4 -m venv c:\path\to\wherever\you\want\it

如果您没有 py.exe 启动器(但应该已安装),您可以将 py -3.4 替换为 c:\Python34\python.exe(假设是默认位置)。


这样可以运行,因为有一个非常方便的、适用于 Windows 的版本选择器 py.exe

默认情况下,py.exe 将存在于 Windows 安装中(我认为它随着 2.7 一起安装,我知道它与 3+ 一起安装)。当您运行 py 时,它会搜索某些环境变量,或者您可以使用特定的版本号来覆盖它(在您的情况下为 -2.7-3.4)。您可以省略 .4,它将选择“最大”的小版本号。

您还可以使用它来运行 Python 脚本。如果您在脚本顶部放置哈希-邦行 #!python3 并调用它 py myscript.py,它将通过搜索脚本的第一行并搜索版本号来选择正确的 Python 版本开始运行。

这很酷,因为您可以在脚本顶部放置类似于 #!/usr/bin/env python3.4 的内容,并在 Windows 上使用 py 运行它,在 Linux 上则是:

$ chmod +x myscript.py
$ ./myscript.py

相当实用。


可以,谢谢。我不熟悉py。我得查一下。 - marcp
@marcp,添加了一些信息(尽管您也可以在官方文档中找到所有信息)。 - Wayne Werner
@oenpelli 的解决方案对我有效。只需在 -p 参数中添加 python.exe 到路径中即可。 - RandyTek

14

在Windows下,你需要运行:

virtualenv -p c:\python34.exe myvirtualenv

结尾的.exe有很大的区别。


1
只是一个小提示,“virtualenv -p c:\python34\python.exe myvirtualenv” 对我有效。 - RandyTek

8

我花了一些时间来调整这个,以便把它做好。我已经安装了Python2.7.9(Windows 7),想试试最新的Python3版本。安装完Python3.4.3后,我进入目录栏并使用以下命令创建了一个名为foo的虚拟环境:

virtualenv -p c:\Python34\python.exe foo

我花了相当长的时间才明白,我需要按照“正常”的方式安装Python3.4.3解释器,最初我以为可以使用virtualenv来安装。这在这个答案中有所解释。在安装Python3.4.3后,我没有触碰Windows中的pythonpath。


这个答案对我来说可行,适用于2.7.16、3.6.8、3.7.3和3.8.2版本。如果由于任何原因没有virtualenv,总是可以使用pip install virtualenv进行安装。 - jiciftw

2
如果上述方法无效,请尝试以下方法(使用venv代替virtualenv):
python -m venv venvname

(如果环境变量路径设置中未列出python,则将python替换为python.exe路径)

0

在Windows上使用GitBash时,我也遇到了一些问题。

我已经将Python 3.6添加到了Windows路径中,但是我想为测试一个旧项目创建一个Python 2.7虚拟环境。

最终通过以下方式解决了问题:

1. adding the C:\Python27 path to my Windows environment variables 
2. virtualenv -p c:/python27/python.exe venvname

(在那之前,我不得不折腾添加virtualenv模块)


0
您可以像这样使用 virtualenv 命令。
virtualenv --python=C:\python34\python.exe myvirtualenv

Python 3.7 的示例

virtualenv --python=C:\Users\hp\AppData\Local\Programs\Python\Python37\python.exe myenv

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