Пожалуйста, объясните использование 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