Comments 20
umake ide pycharm
pipenv
и poetry
облегчают ведение проекта, но решают несколько разные задачи.Кроме того что авторы `pipenv` имели ощутимые проблемы во взаимодействия с комьютнити, проблемы с совместимостью [1], а последние несколько месяцев не ведется никакой активной разработки. Проект фактически умер. Поэтому я бы его не стал использовать или рекомендовать для разработки новых проектов.
`poetry` же, на мой взгляд, весьма перспективный проект, но все еще имеет проблемы с производительностью (ощутимые на некоторых сценариях) [2] и регрессии [3].
В любом случае оба этих проекта так или иначе используют виртуальные окружения.
Конкретно пакет
virtualenv
действтельно считается устаревшим, так как поддержка виртуальных окружений является частью стандартной библиотеки Python начиная 3.3 [4].[1] chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-delivers-very-little
[2] github.com/python-poetry/poetry/issues/2094
[3] github.com/python-poetry/poetry/issues/2170
[4] docs.python.org/3/library/venv.html
Лол.
У меня есть несколько вопросов: а зачем в Windows добавлять путь к Python в переменную окружения PATH?
А что делать если нужно использовать несколько версий Python?
Для базовой версии Python можно создать переменную покушения c указанием полного пути. Но мне кажется, что лучше сделать параметризированный batch файл и выполнять запуск нужного базового интерпретатора Python.
У меня в Windows LLVM 9 потребовал библиотеки Python 3.6. Так что был практический смысл добавления Python в PATH. Как по другому разрешить эту зависимость я затрудняюсь.
А что делать если нужно использовать несколько версий Python?
Статья рассчитана для начинающих, которым ещё рано беспокоиться о проблемах связанных с использованием нескольких версий Python.
Как поступать в ситуации, когда возникла потребность в разных версиях Python, у меня нет четкого мнения. Всегда можно переопределить переменные среды. На своей практике я писал batch и cmd файлы, устанавливал Conda в Ubuntu. Современные IDE позволяют создавать профили/окружения, где можно указать конкретные компиляторы/интерпретаторы.
Обычно не имеет смысла иметь более двух версий python на одном компьютере. Как правило, это последняя вторая и последняя третья версии. Если так получилось, что установлены обе версии python, то будет обидно, если скрипты третьей версии будут запускаться интерпретатором второй версии. Поэтому лучше не ставить галку напротив "Add Python to Path" при установке (если только вы не собираетесь устанавливать LLVM), а отметить пункт "Install launcher".
Если нужно запустить скрипт второй версий python, то сделать это можно так:
:: Двумя двоеточиями в bat-файлах обозначают комментарии
:: py -2 - это эквивалент команды python из ubuntu
py -2 myscript.py
Для третьей версии запуск будет аналогичным
:: py -3 - это эквивалент команды python3 из ubuntu
:: Пример глобальной установки пакета в определённую версию
py -3 -m pip install virtualenv
:: Пример использования глобальной библиотеки
py -3 -m virtualenv venv
Кстати, про ubuntu. В windows 10 начиная с версии 1910 (если не ошибаюсь) команда python является такой же встроенной, как find, sort и т.п. Что позволяет python-файлам быть такими же родными файлами скриптов для windows, как cmd/bat-файлы или powershell-скрипты. Только делает эта команда совсем не то, что ожидается. При попытке её выполнить, открывается windows-магазин из которой нужно установить python. После установки поведение команды python вполне соответствует ожиданиям. Единственное отличие от ubuntu в том, здесь python третий, а не второй.
Вернём к версия python в windows. Со временем, третьих версий может стать больше одной, тогда при запуске вместе с мажорной нужно указывать минорную версию:
:: У каждой версии свои глобальные пакеты
py -3.7 -m pip install virtualenv
py -3.8 -m pip install virtualenv
Чтобы не запутаться в версиях, можно посмотреть, какие из уже установлены
py -0
В самом худшем случае приходится указывать не только полную версию интерпретатора, но и разрядность
py -3.8-64 -m http.sever
По моему опыту, в 32-разрядной версии возникает меньше проблем с пакетами.
https://github.com/pyenv/pyenv
Для винды есть аналоги, этот конкретный для никсов
А какой никакой дефолный питон должен быть в path, некоторые вещи требуют его
Поставил pypy3 на Ubuntu, в PyCharm в списке интерпретаторов он не появляется. Можно ли как-то добавить его туда?
Пробую, получаю такую ошибку:
running install
error: can't create or remove files in install directory
The following error occurred while trying to add or remove files in the
installation directory:
[Errno 2] No such file or directory: '/home/nomhoi/PycharmProjects/test_pypy/.env/site-packages/test-easy-install-16450.write-test'
The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:
/home/nomhoi/PycharmProjects/test_pypy/.env/site-packages/
This directory does not currently exist. Please create it and try again, or
choose a different installation directory (using the -d or --install-dir
option).
И после этого в списке интерпретаторов окружение не появляется.
Создание виртуальных окружений и установка библиотек для Python 3 в IDE PyCharm