Использование 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:\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
Я также попробовал это, в частности, указав версию 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-версии, супер приятного выбора времени выполнения 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
.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, если он не указан в настройках пути переменной среды)
Используя GitBash в Windows, у меня возникли некоторые проблемы с тем, чтобы заставить это работать.
У меня был 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)
Вы можете использовать команду virtualenv следующим образом
virtualenv --python=C:\python34\python.exe myvirtualenv
Пример для Python 3.7
virtualenv --python=C:\Users\hp\AppData\Local\Programs\Python\Python37\python.exe myenv