pipenv более элегантно управляет вашей средой разработки Python

Python

Эта статья была впервые опубликована в личном блоге:www.pylixm.cc

часто видел в последнее времяpipenvЭто инструмент управления, у меня есть время проверить его сегодня, даKennethreitzВеликая Божья работа, я взглянул на репозиторий github.Он был создан в январе 2017. Всего за год он набрал более 7 тысяч коллекций.Последнее время отправки было 2 дня назад, что показывает, насколько активен репозиторий. Я написал статью раньше«Использование pyenv + virtualenv для создания многоверсионной среды разработки Python», осталась проблема, я не нашел разумного инструмента для одновременного управления пакетами python и python, попробуйтеpipenv, можно сказать, что он отлично решает проблему версии Python и управления пакетами. иpipenvвсе ещеPython.orgОфициально рекомендуемый инструмент управления пакетами Python. Оригинальный текст выглядит следующим образом:

Pipenv — официально рекомендуемый инструмент упаковки Python с сайта Python.org, бесплатный (как на свободе).

Итак, далее я поделюсь своим пробным процессом для вашей справки:

Готов к работе

Пробная среда и сопутствующие документы

окрестности

  • pipenv 9.0.1
  • python3.6
  • python2.7

Документация

Понимание основных концепций pipenv

  1. Прежде чем мы использовали pip + virtualenv для управления зависимостями python, используйте--python=Параметры для различения версий Python (больше не используйте pyenv, уменьшите зависимости пакетов). Простое понимание идеи pipenv состоит в том, чтобы объединить два инструмента pip и virutalenv, используяpipenvвместо.
  2. pipenvИспользуйте Pipfile вместо require.txt для документирования пакетов Python.
  3. выросPipfile.lockфайл, чтобы заблокировать имя пакета и версию программного обеспечения Python, а также список его зависимостей.
  4. Он ссылается на инструменты управления пакетами на других языках (bundler, composer, npm, Cargo, yarn и т. д.) и направлен на то, чтобы привнести лучшие инструменты управления пакетами в мир Python.

пробная версия функции pipenv

установка пайпэнв

Обычная установка

pipenvЕго можно установить напрямую с помощью pip.

pip install pipenv 

Автор рекомендуетpython3Приведенная ниже установка улучшит совместимость с virtualenv.

The use of Python 3 is highly preferred over Python 2, when installing Pipenv. Compatibility with three virtualenvs is greatly improved when using Python 3 as the installation target.

—Kenneth Reitz

установка пользовательского режима

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

pip install --user pipenv

Путь установочного пакета по умолчанию для pip:/usr/local/lib/python2.7/site-packages. В этом режиме путь сохранения установочного пакета pip — это путь пользовательской библиотеки, обычно/Users/pylixm/Library/Python/3.6/lib/python/site-packages, вы можете использовать командуpython3 -m site --user-siteПроверьте это. Если pipenv недоступен в вашей оболочке после установки, вам нужно поместить бинарный каталог пользовательской библиотеки/Users/pylixm/Library/Python/3.6/binк вашему ПУТИ.

использование пайпэнв

Инициализировать виртуальную среду

воплощать в жизньpipenv install, создайте виртуальную среду следующим образом:

~/laboratory/pip_test_project ⌚ 20:42:10
$ pipenv install
Creating a virtualenv for this project…
⠋New python executable in /Users/pylixm/.local/share/virtualenvs/pip_test_project-MXA0TC90/bin/python2.7
Also creating executable in /Users/pylixm/.local/share/virtualenvs/pip_test_project-MXA0TC90/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /Users/pylixm/.local/share/virtualenvs/pip_test_project-MXA0TC90
Creating a Pipfile for this project…
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (c23e27)!
Installing dependencies from Pipfile.lock (c23e27)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00
To activate this project's virtualenv, run the following:
 $ pipenv shell

Из распечатанной информации видно, что он находится в каталоге пользователя.localСоздайте виртуальную среду с тем же именем, что и у проекта (вы можете настроить каталог виртуальной среды, настроив переменные среды,export WORKON_HOME=~/.venvs), python использует по умолчанию python2.7. через параметр--twoи--threeдля ссылки на версию python в целом или через--python 3.5Чтобы четко знать версию python, но предпосылка этих параметров заключается в том, что у вас есть эта версия python в вашей системе, иначе будет сообщено о следующей ошибке:

$ pipenv --python 3.5
Warning: Python 3.5 was not found on your system…
You can specify specific versions of Python with:
  $ pipenv --python path/to/python

Что-то вроде virtualenv--pythonпараметр.

После инициализации виртуальной среды в каталоге проекта будут сгенерированы 2 файлаPipfileиPipfile.lock. Это файл конфигурации пакета pipenv, заменяющий исходный файл require.txt. Когда проект представлен,Pipfileдокументы иPipfile.lockФайл передается под контроль, ожидая загрузки других клонов разработки, выполните команду в соответствии с этим Pipfilepipenv install [--dev]Создайте свою собственную виртуальную среду.

Pipfile.lockФайл представляет собой хеш-значение, сгенерированное именем и версией пакета, а также его зависимостями посредством хеш-алгоритма, который может обеспечить целостность пакета.

установить модуль питона

нормальная установка

УстановитьrequestsМодуль:

$ pipenv install requests
Installing requests…
Collecting requests
  Using cached requests-2.18.4-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests)
  Using cached certifi-2017.11.5-py2.py3-none-any.whl
Collecting idna<2.7,>=2.5 (from requests)
  Using cached idna-2.6-py2.py3-none-any.whl
Collecting urllib3<1.23,>=1.21.1 (from requests)
  Using cached urllib3-1.22-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests)
  Using cached chardet-3.0.4-py2.py3-none-any.whl
Installing collected packages: certifi, idna, urllib3, chardet, requests
Successfully installed certifi-2017.11.5 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22

Adding requests to Pipfile's [packages]…
  PS: You have excellent taste! ✨ 🍰 ✨
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (2f8679)! 

через командуpipenv graphПросмотр установленных модулей и их непосредственных взаимозависимостей.

$ pipenv graph
requests==2.18.4
  - certifi [required: >=2017.4.17, installed: 2017.11.5]
  - chardet [required: <3.1.0,>=3.0.2, installed: 3.0.4]
  - idna [required: >=2.5,<2.7, installed: 2.6]
  - urllib3 [required: >=1.21.1,<1.23, installed: 1.22]
Установить только среду разработки

Его можно установить только в среде разработки с помощью следующей команды:

pipenv install --dev requests --three

Разница отражается вPipfileВыше:

[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[dev-packages]


[packages]

requests = "*"
flask = "==0.10"

[requires]
python_version = "3.6"

Запись пакета установки находится в[dev-packages]часть или[packages]часть. При установке указать--devпараметр, только установить[dev-packages]Под пакетом, если он не указан при установке--devпараметры, будут установлены только[packages]модули ниже пакета.

[requires]Приведенный ниже python будет автоматически загружен и установлен при создании новой виртуальной среды.

Установить через требования.txt
pipenv install -r requirements.txt

Таким образом, мы можем повторно использовать предыдущий файл require.txt для создания нашей новой среды разработки, и мы можем плавно перенести наш проект на pipenv.

Файл требований можно создать с помощью следующей команды:

pipenv lock -r [--dev] > requirements.txt

запустить виртуальную среду

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

pipenv run python xxx.py

Или запустите оболочку виртуальной среды:

~/laboratory/pip_test_project
$ pipenv shell --anyway
Spawning environment shell (/bin/zsh). Use 'exit' to leave.
source /Users/pylixm/.local/share/virtualenvs/pip_test_project-MXA0TC90/bin/activate

~/laboratory/pip_test_project 
$ source /Users/pylixm/.local/share/virtualenvs/pip_test_project-MXA0TC90/bin/activate
(pip_test_project-MXA0TC90)
~/laboratory/pip_test_project
$ exit

~/laboratory/pip_test_project
$ pipenv shell
Shell for UNKNOWN_VIRTUAL_ENVIRONMENT already activated.
No action taken to avoid nested environments.

бежать напрямуюpipenv shellКомандная строка оболочки не появится, так и должно быть, потому что переменная окружения не настроена. Нужны дальнейшие исследования.Вроде бы надо менять среду конфигурации, но я не нашел.

pipenvпри условии.envфайл, поместите его в каталог проекта, укажите переменные среды, необходимые для проекта, запуститеpipenv shellзагружается автоматически.

Удалить виртуальную среду и пакеты

Удалить пакет:

pipenv uninstall reuqests

Удалить виртуальную среду:

pipenv --rm 

Суммировать

  • pipenvОн отлично решает проблемы управления пакетами и версиями Python.
  • Он также управляет зависимостями между пакетами, что удобно разработчикам для создания собственной среды разработки и запуска.

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

Ссылаться на