Вот

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

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

 Stephen20 сент. 2017 г., 21:55
Похоже, что он уже был развернут в репозитории Heroku "Начало работы с Python" (github.com/heroku/python-getting-started.git) так нравится или нет, похоже, что это производственный.
 Charles Duffy20 сент. 2017 г., 21:29
Это прямой аналогGemfile а такжеGemfile.lock из мира Ruby:.lock файл имеет конкретные версии для каждой зависимости; тот, у которого нет этого расширения, имеет только версии, известные человеку. Тем не менее, просить объяснения чего-то, что все еще развивается и еще далеко от того, чтобы быть четко определенным, гораздо менее стандартизированным, возможно, немного преждевременно.
 Stephen20 сент. 2017 г., 21:57
На какие документы вы ссылаетесь?
 Charles Duffy20 сент. 2017 г., 21:33
(И аналогично разница междуPipfile а такжеrequirements.txt в основном то, что первый пытается перенять особенности мира Ruby, т.е. возможность указать наборы зависимостей для нескольких сред и с условиями / опциями / и т. д. в одном файле).
 Charles Duffy20 сент. 2017 г., 21:56
Попался. Тем не менее, документы выглядят довольно солидно для меня. Я не знаю, что я мог бы написать в ответе, который бы не просто повторял их.

Ответы на вопрос(1)

рументам, если вы немного знакомы с Ruby's Bundler или Node's Npm. Инструмент управления пакетамиPipenv использует стандарт Pipfile и Pipfile.lock.

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 так что для краткости он здесь не будет отображаться.

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

 Stephen17 апр. 2018 г., 21:27
Вы имели в виду "на основе пакетов, представленных вPipfile файл"?
 Stephen17 апр. 2018 г., 21:30
Это интересный ответ, но я думаю, что когда я спрашивал, я не мог понять, что на самом деле означает[[source]]Например, это источник пакетов, загружаемых pipenv или что-то еще? Я предполагаю, что остальные два файла достаточно очевидны.
 danieldeveloper00121 нояб. 2018 г., 20:33
Изменено, как требуется, чтобы избежать путаницы в пакетах разработки, спасибо за ваш комментарий, надеюсь, теперь это не так сложно :)
 danieldeveloper00128 дек. 2018 г., 10:12
Я думаю, что это хорошая идея, если вы хотите отслеживать версии пакетов по мере эволюции исходного кода, поскольку большинство пакетов будут помечены версиейPipfile, Если что-то сломается при обновлении пакета, то можно будет исправить это, просмотрев историю версий пакета, и действительно, один из создателей библиотеки запросов рекомендует это сделать.Вот.
 Al Sweigart21 нояб. 2018 г., 20:25
Признаюсь, это меня сбило с толку, потому что я работаю над учебником, в котором мне нужно решить, важно ли различие в [package] / [dev-package], или мне просто положить все в [package]. (Гугл для этого и привел меня на эту страницу.) Но то, что я положил обе вещи в [пакет], привело меня в замешательство. Я мог видеть, почему запросы должны быть в [пакете] все же.

Ваш ответ на вопрос