Запуск Python3 на общем компьютере с Python2? Установка и запуск конфликтов, возврат к библиотекам Py2

Итак, я написал несколько скриптов Python3, которые я хочу запустить на общем рабочем компьютере. На этом компьютере установлен python2.7 и много запланированных 2.7 скриптов, и я должен убедиться, что они остаются нетронутыми. Поэтому я подумал, что это портативная или виртуальная среда Python3, которую я могу сохранить только для своих скриптов.

Если бы были изменения в том, что я пробовал, или новый способ, который я не рассматривал, это было бы очень ценно. Также извините за длинный пост, хотел быть конкретным.


Что я пробовал:

1) Установка переносной версии python3 (WinPython 3.7).

Затем в файле.bat для запуска моего сценария я положил:

SET PYTHONPATH = "C:\Localdata\...\WPy-3702\python-3.7.0.amd64\Lib\site-packages"
"C:\Localdata\...\WPy-3702\python-3.7.0.amd64\python.exe" test.py

Где test.py просто:

import six
print(six.__file__)

Теперь это прекрасно работает на моем ноутбуке, возвращая каталог site-package winpython:

> C:\Localdata\...\WPy-3702\python-3.7.0.amd64\Lib\site-packages\six.py

Однако при прочих равных условиях общий компьютер возвращается к установленной библиотеке 2.7.

> C:\Program Files (x86)\Python27\lib\site-packages\six.py

Это ломает это конечно и кажется корнем моей проблемы. Я проверил, и есть шесть.py в папке site-пакетов winpython. Я пробовал разные версии / установки winpython без удачи. (В идеале, если бы кто-то указал на простую команду, которую я здесь пропустил, которая могла бы это исправить, это было бы здорово.)

К вашему сведению, если я запускаю python из "WinPython Command Prompt.exe", который идет в комплекте, это действительно версия 3.7, просто он не будет использовать локальные библиотеки 3.7 пакета сайта...

2) Установка Anaconda3 и не добавление в PATH.

Установка завершена, но у меня остается только Anaconda Prompt в меню "Пуск" (без jupyter, spyder и т. Д.) И Anaconda Prompt, как только я пытаюсь открыть ее:

> 'C:\Users\...\anaconda3\Scripts\activate.bat' is not recognized as an 
internal or external command, operable program or batch file.

У меня есть опыт решения этой проблемы на других рабочих ПК, и решение состоит в том, чтобы удалить Python по умолчанию и переустановить Anaconda, но, как я уже говорил, я не могу коснуться текущей установки Py2, не раздражая МНОГО людей, поэтому еще один тупик,

(Хотя установка каким-то образом не удалась, файлы anaconda3 все еще установлены, поэтому я попробовал тот же трюк test.py + batchfile для пакетов сайта anaconda3, но он делает то же самое).

3) Создание Venv:

Хорошо, я признаю, что я немного наивен здесь, если я прочитал это: почему virtualenv полагается на глобальный питон, а не на локальный, после того, как его вытащили? похоже, у меня будут те же проблемы, что и выше.

Из моего предыдущего поста Как запустить скрипт Python локально в виртуальной среде на компьютере с другим пользователем Windows и обеспечить его постоянную работу? ответ на использование pyinstaller полезен для однократного использования, но у меня много сценариев, которые я сейчас хочу запускать на одном компьютере, поэтому пакет 500 МБ + для каждого сценария будет слишком громоздким.

2 ответа

Решение

При использовании команды set. Любые пробелы, которые вы используете перед символом равенства, являются частью самого имени переменной. Так что, если вы хотите использовать эту переменную, вы должны ссылаться на нее как %myvar % с пробелом в конце.

Также не рекомендуется назначать кавычки для переменной. Вы можете использовать их, чтобы защитить специальные символы в значении переменной, и это также помогает избежать конечных пробелов в конце значения переменной.

 SET "PYTHONPATH=C:\Localdata\...\WPy-3702\python-3.7.0.amd64\Lib\site-packages"

Вариант 3, virtualenv это то, с чем я бы пошел. Здорово, что вы смогли установить переменную окружения из комментария @Declan, но я думаю, что использование virtualenv - неплохая идея, даже если у вас нет проблем с версией Python. Он поддерживает чистоту ваших глобальных сред Python, может обеспечить своего рода торговую деятельность и так далее.

Чтобы установить версию Python нового virtualenv, вы используете -p флаг.

Несвязанное примечание: Python 2 будет объявлен устаревшим в 2020 году.

Другие вопросы по тегам