Эта статья была впервые опубликована в личном блоге: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
- официальная документация pipenv
Понимание основных концепций pipenv
- Прежде чем мы использовали pip + virtualenv для управления зависимостями python, используйте
--python=Параметры для различения версий Python (больше не используйте pyenv, уменьшите зависимости пакетов). Простое понимание идеи pipenv состоит в том, чтобы объединить два инструмента pip и virutalenv, используяpipenvвместо. -
pipenvИспользуйте Pipfile вместо require.txt для документирования пакетов Python. - вырос
Pipfile.lockфайл, чтобы заблокировать имя пакета и версию программного обеспечения Python, а также список его зависимостей. - Он ссылается на инструменты управления пакетами на других языках (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. - Он также управляет зависимостями между пакетами, что удобно разработчикам для создания собственной среды разработки и запуска.
Время ограничено, приведенный выше список — это только часть функций, смотрите более мощные функцииофициальная документация.