Использование VirtualEnv с несколькими версиями Python в windows

у меня есть Python 2.7.6 и 3.4.0 на моей машине. Версия 2.7 на моем пути. Я хотел бы настроить virtualenv с помощью 3.4. Есть много сообщений на 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:python27scriptsvirtualenv-script.py", line 9, in <module>
    load_entry_point('virtualenv==1.11', 'console_scripts', 'virtualenv')()
  File "C:Python27libsite-packagesvirtualenv.py", line 779, in main
    popen = subprocess.Popen([interpreter, file] + sys.argv[1:], env=env)
  File "C:Python27libsubprocess.py", line 709, in __init__
    errread, errwrite)
  File "C:Python27libsubprocess.py", line 957, in _execute_child
    startupinfo)
WindowsError: [Error 5] Access is denied

Я также пробовал это специально, указывая на версию 3.4 virtualenv, но без изменения пути он заканчивается выполнением смешанного пакета из 2.7 и 3.4 файлов python.

единственный способ настроить мою виртуальную среду-изменить мой путь на 3.4, запустить virtualenv, а затем сбросить мой путь до 2.7, что побеждает точку переключателя python на virtualenv.

спасибо

4 ответов


лучше:

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

если у вас нет py.exe лаунчер (но он должен быть установлен) вы можете заменить py -3.4 С c:\Python34\python.exe (предполагается по умолчанию)


это работает из-за удобного-денди, Windows-versioningest, супер хороший выбор времени выполнения 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

очень полезно.


под Windows вам нужно запустить:

virtualenv -p c:\python34.exe myvirtualenv

The .exe на конце делает всю разницу.


пришлось поиграть с этим некоторое время, чтобы получить это право. Был Python2.7.9 установлен (Windows 7), хотел взять последнюю версию Python3 для спина. После установки Python3.4.3 я пошел в панель каталогов и создал виртуальную среду foo с помощью этой команды:

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

Мне потребовалось некоторое время, чтобы понять, что мне нужно установить Python3.4.Интерпретатор 3 в "нормальном" стиле, я изначально думал, что он будет установлен с помощью virtualenv. Это было объяснено в ответ. Я не касался pythonpath в Windows после установки Python3.4.3.


Если вышеуказанные меры не работают, попробуйте это (используя venv вместо virtualenv):

python -m venv venvname

(замените python на python.exe-путь, если он не указан в настройках пути переменной среды)