Пожалуйста, объясните использование Pipfile и Pipfile.lock

Похоже, что Pipfile / Pipfile.lock предназначены для замены для require.txt в контексте упаковки Python. Однако не так много документации о том, как они на самом деле работают. Я нашел развивающееся описание pipfile в разделе PyPi на веб-сайте Python, но оно довольно грязное и не объясняет семантику различных разделов файла.

Любые указатели о том, как понять эти файлы?

3 ответа

Концепция этих файлов проста и аналогична другим уже существующим инструментам, если вы немного знакомы с Ruby's Bundler или Node's Npm. Инструмент управления пакетами Pipenv использует стандарт Pipfile и Pipfile.lock. В какой-то момент стандарт Pipfile может также использоваться непосредственно pip

Pipenv обрабатывает виртуальную среду одним стандартным способом (больше не требуется активация и деактивация). Ниже приведены некоторые основы, с которых можно начать, подробнее на веб-сайте pipenv.

Начиная

Начать использовать pipenv легко, в папке вашего проекта типа...

$ pipenv install

... и если у него уже есть requirements.txt файл, он будет генерировать Pipfile файл с требованиями и папкой виртуальной среды, в противном случае будет сгенерирован пустой Pipfile файл. Если вам не нравится или передумал что-то, что вы установили, просто введите...

$ pipenv uninstall <package>

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

$ pipenv shell

... и ваша виртуальная среда будет активирована. Оставить окружающую среду...

$ exit

... и вы вернетесь к исходному сеансу bash/powershell.

Pipfile

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

$ pipenv install flask

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

$ pipenv install --dev pytest

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

[[source]] # Here goes your package sources (where you are downloading your packages from).
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages] # Here goes your package requirements for running the application and its versions (which packages you will use when running the application).
requests = "*"
flask = "*"
pandas = "*"

[dev-packages] # Here goes your package requirements for developing the application and its versions (which packaes you will use when developing the application)
pylint = "*"
wheel = "*"

[requires] # Here goes your required Python version.
python_version = "3.6"

Pipfile.lock

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

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

$ pipenv lock

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


Все еще есть сомнения? Дайте мне знать, чтобы я мог улучшить ответ, чтобы другие могли извлечь из него урок. Я уже перенес свои проекты в него, и я использую его ежедневно на работе, это того стоит;)

Стоит отметить, что на данный момент (2022 г.) pipfileа также pipfile.lockиспользуются только инструментом , написанным теми же авторами. В настоящее время нет стандарта (например , PEP), в котором упоминаются эти файлы.

Касательно pipenvесть и другие популярные инструменты (например, поэзия), которые пытаются решить аналогичный вариант использования без использования pipfiles.

В связи с этим, есть также рассвет pyproject.tomlподдерживается различными PEP, такими как 660 и 621, который постепенно получает поддержку со стороны setuptools, flit, hatch.

Как объяснил выше @Charles Duffy, это прямой аналог Gemfile и Gemfile.lockиз мира Ruby. См. Ссылку ниже для получения более подробной информации.

Ссылка: https://medium.com/ Never-hop-on-the- bandwagon/ https://medium.com/never-hop-on-the-bandwagon/gemfile-and-gemfile-lock-in-ruby-65adc918b856

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