Python 3 виртуальная среда выполняет python 2 - PullRequest
0 голосов
/ 22 января 2020

Из-за этой проблемы я некоторое время чесал голову.

Я уже дважды сталкивался с этой проблемой, на windows 7 и windows 10. Поскольку это закрытая сеть, я никаких проблем безопасности с W7.

У меня есть существующая установка Python 2.7 - густонаселенная, с некоторыми довольно старыми версиями библиотеки. Хотя я хотел бы создать виртуальную среду для Python 2.7, я не хочу этого делать, потому что колеса недоступны для многих версий библиотек, которые мне нужно использовать, и истории изменений не доступны для некоторых из них. более старые библиотеки, поэтому, не пытаясь их использовать, я не могу определить, являются ли более поздние версии библиотек обратно совместимыми или нет. Поскольку код Python 2.7 взят из производственной среды, я не могу его сломать / заменить.

Все библиотеки python 2.7 устанавливаются из исполняемых установщиков, так как многие из них предшествуют введению python руль стандартный. Некоторые из них также требуют сборки с более старыми версиями MSV C, что является еще одной причиной нежелания пытаться восстановить.

Будет гораздо проще оставить установку python 2.7 как есть и начать запуск Python 3 в виртуальных средах, хотя мой первоначальный план состоял в том, чтобы создать отдельную виртуальную среду 2.7.

Пример Python 3 виртуальная среда, созданная как "py37".

В моей виртуальной среде окружение.

include-system-site-packages = false

Когда я активирую виртуальную среду, все выглядит хорошо.

Python -V возвращает 3.7.3, что я и ожидал

Я изменил Мой сценарий для вывода версии python (чтобы я мог отслеживать происходящее)

(py37) C:\my_folder\my_script.py

3.7.3 (v3.7.3:ef4c6ed12, Mar 25, 2019, 21:26:53) [MSC v.1916 32 bit (Intel)]

Traceback (most recent call last):

file "my_script.py", line 24, in (module)

               from tk import ttk

ModuleNotFoundError: No module named 'tk'. 'tk' (python 3 lib) is not being found.

Затем я создал два простых сценария, один с использованием формата печати python 2, другой python 3 .

Даже если в виртуальной среде указано python 3, а в версии python указано 3.7.3, сценарий python 3 не запускается.

Версия python 2 печати распечатывается правильно, так четко, хотя все признаки того, что Python 3 работает, на самом деле это Python 2.

PythonPath не определен / не определен на P C, и моя переменная пути указывает на мою виртуальную среду python 3, не моя Python 2 установка.

Все поиски и примеры, которые я придумала, останавливаются, когда version () или Python -V возвращает 3.x, поэтому, если это повторяющаяся проблема, я не справился найти оригинальный запрос.

1 Ответ

0 голосов
/ 09 марта 2020

Решение этого было простым, но неприятным.

Чтобы все работало как надо, мне нужно было явно указать исполняемый файл, который я хотел запустить, каждый раз, когда я хотел его запустить, т.е. полный путь к исполняемому файлу python в моей виртуальной среде python3.

В итоге я создал оболочку для пакетного файла, чтобы упростить

, например c: \ apps \ my_venv3 \ scripts \ python .exe% *

Неуклюжий, но работает надежно и не нарушает ни одну из существующих сред.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...