Как правильно использовать Pyenv и Venv? - PullRequest
0 голосов
/ 10 октября 2018

Прочитанные статьи:

Виртуальные среды Python: учебник ,

Pyenv - установка нескольких версий Python для конкретного проекта ,

Как управлять несколькими версиями Python и виртуальными средами

Предположим, у нас есть следующие каталоги:

 ~/Projects/PyA : it'll use Python 3.4.3 with Django 2.0
 ~/Projects/PyB : it'll use Python 3.5.1 with Django 2.1
 ~/Projects/PyC : it'll use Python 3.5.6 with Django 2.2
 ~/Projects/PyD : it'll use Python 3.2 with python-igraph

Сначала мы установим необходимые версии Python:

$ pyenv install 3.4.3
$ pyenv install 3.5.1
$ pyenv install 3.5.6
$ pyenv install 3.2

Мои сомнения начинаются здесь:

Должен ли я это сделать?

$ cd ~/Projects/PyA && pyenv local 3.4.3 && python3.4 -m venv proA
$ cd ~/Projects/PyB && pyenv local 3.5.1 && python3.5 -m venv proB
$ cd ~/Projects/PyC && pyenv local 3.5.6 && python3.5 -m venv proC
$ cd ~/Projects/PyD && pyenv local 3.2 && python3.2 -m venv proD

Когда используется уникальный каталог для виртуальных сред??Какой вариант рекомендуется?Почему?

Как установить пакеты для каждого проекта, перечисленные выше?

Должен ли я использовать virtualenvwrapper?

Как переключаться между проектами (изменение Python / виртуальной среды впроцесс) легко или безболезненно?

В Ruby есть файл с именем Gemfile , в котором я могу указать, какие гемы (с их соответствующими версиями) установлены для текущего проекта, который являетсяочень хорошая идея, есть ли что-то похожее для Python?

Заранее спасибо.

PS: я использую ArchLinux в качестве гостя для бродячей коробки.

РЕДАКТИРОВАТЬ 10 ​​/18.10.10 Большое спасибо за ответы.Но я прошу с большим уважением всех вас, если вы могли бы ответить конкретно на каждый вопрос, заданный для меня, пожалуйста.Я лучше учусь на практических примерах, чем на теории.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Отредактируйте, чтобы ответить на все ваши вопросы:

Когда используется уникальный каталог для виртуальных сред?Какой вариант рекомендуется?Почему?

Каждая виртуальная среда «живет» в своей собственной папке.Все пакеты, которые вы устанавливаете, будут идти туда, особенно если каждая среда будет иметь разную версию Python.

Как мне устанавливать пакеты для каждого проекта, перечисленные выше?

Когда выпереключитесь на среду проекта после того, как вы ее создали, см. мой оригинальный ответ ниже, все установленные пакеты будут устанавливаться исключительно в ту виртуальную среду, в которой вы сейчас работаете.

Вы всегда можете проверить, какой Python используется в данный момент,набрав

which python

в терминале, в котором вы в данный момент активировали среду проекта.Кроме того, вы также можете проверить

which pip

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

pip freeze > requirements.txt

в любое время, и установленные в данный момент пакеты плюс их версия будут записаны в текстовый файл requirements.txt.Теперь вы всегда можете создать новую среду, используя

pip install -r requirements.txt

Должен ли я использовать virtualenvwrapper?

Я бы всегда работал в виртуальной среде для каждого проекта, так что другие проекты, которые могутИспользовать некоторые закрепленные версии специального пакета не влияют.

Как легко или безболезненно переключаться между проектами (меняя Python / виртуальную среду в процессе)?

Вы можете определить псевдоним в вашем ~/.bashrc или ~/.bash_aliases.В терминале откройте (в моем примере) ~/.bashrc с помощью текстового редактора, например, vim / nano или по вашему вкусу:

nano ~/.bashrc

, и где-то ближе к концу вы можете добавить строку с псевдонимом дляпереключитесь в каталог проекта и одновременно активируйте среду:

alias activate_proj1="cd ~/project_1 && pyenv activate venv_project_1"

, чтобы вы набирали в терминале только 1050 (также работает завершение табуляции), и обе команды выполняются.Не забудьте снова получить bash-файл после того, как вы что-то измените с помощью source ~/.bashrc или просто откроете новый терминал.


оригинальный ответ:

pyenv будет обрабатывать все, что вам нужно:

Мой рабочий процесс (для одного проекта, чтобы сделать его более читабельным) будет следующим:

pyenv install 3.5.1
cd python_projects
mkdir myproject
cd myproject
pyenv virtualenv 3.5.1 venv_myproject

После этого вы можете просто активировать созданный virtualenvpyenv, используя

pyenv activate venv_myproject

, что откроет вам отличную среду.Здесь вы можете делать все, что вам нужно, например устанавливать пакеты с помощью pip и т. Д. После завершения настройки среды вы можете заморозить среду и создать файл требований:

pip freeze > requirements.txt

, чтобы иметь возможностьвосстановить окружающую среду, если это необходимо.Таким образом, все накладные расходы (установка PATH и т. Д.) Будут обрабатываться pyenv.

Если вы хотите работать над различными проектами, просто активируйте необходимую среду и все готово!

0 голосов
/ 10 октября 2018

В этом вопросе много чего происходит.

virtualenv рабочие процессы обычно довольно просты.Вы создаете каталог для своего проекта, переходите в него и запускаете virtualenv venv для простого virtualenv, но вы также можете указать, какой исполняемый файл python вы хотите использовать в своей виртуальной среде, с -p python3.5 для виртуальной среды python3.5., например.Здесь не происходит никакой магии.Для создания виртуальной среды python3.5 вам нужно установить python3.5.Чтобы активировать эту виртуальную среду, вы просто source venv/bin/activate.После активации ваша оболочка должна отражать, в какой виртуальной среде вы работаете. Вы даже можете запустить which python, чтобы убедиться, что она фактически направлена ​​на структуру каталогов venv.Простой.

Аналог Gemfile в python будет аналогичен тому, что большинство проектов используют как requirements.txt.Их можно сгенерировать тривиально, запустив pip freeze > requirements.txt или установить, запустив pip install -r requirements.txt.Как правило, это делается в контексте виртуальной среды, чтобы не нарушать или не загромождать глобальные пакеты python вашей операционной системы.

Кеннет Рейтц выпустил инструмент, который включает в себя virtualenv под названием pipenv , и выглядит он оченьхорошо, но у меня были некоторые проблемы, когда я ломал свои привычки использовать virtualenv, и правда в том, что virtualenv не доставил мне достаточно проблем для глубокого изучения этого нового проекта, но ваш пробег может отличаться.Вклад г-на Рейтца в сообщество Python в подавляющем большинстве позитивен, поэтому на него определенно стоит обратить внимание.

...