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

时间:2014-04-01 18:13:05

标签: python virtualenv

我的机器上有python 2.7.6和3.4.0。 2.7版本在我的路上。我想用3.4建立一个virtualenv。在SO和其他地方有很多帖子建议我从命令提示符执行以下操作:

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 个答案:

答案 0 :(得分:21)

更好:

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)您可以不使用{{1它会选择&#34;最大的&#34;次要版本号。

您也可以 使用它来运行Python脚本。如果你在脚本.4的顶部放置一个哈希爆炸线并将其称为#!python3,那么它将通过搜索脚本的第一行并搜索来选择正确的Python版本。对于版本号。

这很酷,因为您可以将py myscript.py之类的内容放在脚本的顶部并在Windows上使用#!/usr/bin/env python3.4运行,或者在Linux上运行

py

很有用。

答案 1 :(得分:10)

在Windows下,您需要运行:

virtualenv -p c:\python34.exe myvirtualenv

最后的.exe会有所不同。

答案 2 :(得分:6)

不得不玩这一段时间才能做到正确。如果安装了Python2.7.9(Windows 7),想要获取最新的Python3版本。安装Python3.4.3后,我转到目录栏并使用以下命令创建了一个虚拟环境foo:

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

我花了很长时间才明白我需要以“正常”方式安装Python3.4.3解释器,我原本以为它将使用virtualenv进行安装。这在this answer中有所解释。安装Python3.4.3后,我没有触及Windows中的pythonpath。

答案 3 :(得分:0)

If above measures are not working, try this( using venv instead of virtualenv):

python -m venv venvname

(replace python with python.exe path if it is not listed in environment variable path settings)

答案 4 :(得分:0)

在Windows上使用GitBash时,我很难使它也正常工作。

我在Windows路径上安装了Python 3.6,但试图创建一个Python 2.7虚拟环境来测试旧项目。

最终通过以下方式使它起作用:

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

(在此之前,我不得不为添加virtualenv模块而烦恼)

答案 5 :(得分: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