Проблемы при создании виртуальной среды с другой Python версией - PullRequest
1 голос
/ 30 января 2020

Я работаю над большим проектом, который нужно перенести с python2 .7 на python3 .7. Для разработки я полагаюсь на виртуальные envs.

Для 2.7v я использую виртуальную среду, созданную с помощью модуля virtualenv, и ее пакеты virtualenvwrapper и virtualenvwrapper-win.

Для 3.7v я попытался создать env с использованием тех же пакетов, на этот раз я установил их в каталог python3 .7. Мне удалось настроить python3 .7 с его собственной переменной среды, назвав ее python3.exe, чтобы я мог выбрать, куда устанавливать дополнительные пакеты python.

т.е. pip install virtualenv - для установки Virtualenv в каталоге python2 .7, но

python3 -m pip install virtualenv - для установки в каталог python3 .7

C:\Users\user1>pip freeze
...
stevedore==1.30.1
virtualenv==16.4.3
virtualenv-clone==0.5.1
virtualenvwrapper==4.8.4
virtualenvwrapper-win==1.2.5

против

C:\Users\user1>python3 -m pip freeze
...
stevedore==1.31.0
virtualenv==16.7.5
virtualenv-clone==0.5.3
virtualenvwrapper==4.8.4
virtualenvwrapper-win==1.2.5

Пока все хорошо.

Когда я хочу создать виртуальный env с именем envTest с python3 .7, вот команда Я использую:

mkvirtualenv python3 envTest

Чтобы избежать дальнейших ошибок, я переименовал новый python исполняемый файл в локальной папке env на python0.exe.

Теперь, Я могу проверить пути и версии всех трех доступных python источников (python.exe = python2 .7, python3.exe = python3 .7 и python0.exe = python, исполняемых из виртуальной среды).

НО , вот что я получаю:

(envTest) C:\Users\user1\projects\env_testing>whereis python
C:\Python27\python.exe

(envTest) C:\Users\user1\projects\env_testing>whereis python3
C:\Users\user1\AppData\Local\Programs\Python\Python37\python3.exe

(envTest) C:\Users\user1\projects\env_testing>whereis python0
C:\Users\user1\Envs\envTest\Scripts\python0.exe

(envTest) C:\Users\user1\projects\env_testing>python --version
Python 2.7.16

(envTest) C:\Users\user1\projects\env_testing>python3 --version
Python 3.7.4

(envTest) C:\Users\user1\projects\env_testing>python0 --version
Python 2.7.16

(envTest) C:\Users\user1\projects\env_testing>

Мне кажется, что я не получил права virtualenvwrapper при создании envTest env, и тем самым косвенно назвал неправильную python версию.

Как я мог это исправить?

Я также попытался просто попробовать python3 .x встроенный venv, но при его использовании я получаю сообщение об ошибке:

C:\Users\user1\projects>python3 -m venv ./venv_Test venvEnv
Error: [WinError 2] The system cannot find the file specified

чет Хотя он создал следующие каталоги, но без python исполняемого файла

C:\Users\user1\projects\venv_Test>dir
...
30.01.2020  14:41    <DIR>          .
30.01.2020  14:41    <DIR>          ..
30.01.2020  14:41    <DIR>          Include
30.01.2020  14:41    <DIR>          Lib
30.01.2020  14:41               117 pyvenv.cfg
30.01.2020  14:41    <DIR>          Scripts
...

1 Ответ

1 голос
/ 06 февраля 2020

Я решил проблему с помощью следующих шагов:

  1. Я читал о Python Launcher для Windows py.exe.

  2. Мне пришлось переименовать мой Python3 .7 исполняемый файл с python3.exe обратно на python.exe, чтобы сделать его исполняемым с py.exe.

  3. Для создания виртуального env с virtualenv я использовал py.exe со следующей командой:

mkvirtualenv envTest2 -p C:\Users\user1\AppData\Local\Programs\Python\Python37\python.exe

теперь все проверено:

(envTest2) C:\Users\user1\projects\env_testing>whereis python
C:\Users\user1\Envs\nanopy3\Scripts\python.exe

(envTest2) C:\Users\user1\projects\env_testing>python --version
Python 3.7.4
...