Как заморозить требование с помощью pipenv?

Например, у нас есть некоторый pipfile (ниже), и я хотел бы заморозить версию django. У нас нет require.txt, и мы используем только pipenv. Как я могу заморозить версию Django?

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
django = "*"

[dev-packages]
black = "*"

[requires]
python_version = "3.6"

11 ответов

Решение

Это так же просто, как изменить django = "*" в django = "your-preferred-version", Поэтому, если вы хотите заморозить его до версии 2.1, последней версии на момент написания этой статьи, вы можете сделать это:

[packages]
django="2.1"

pipfile В репозитории Git есть несколько хороших примеров различных способов указания строк версии: https://github.com/pypa/pipfile

Обратите внимание, что когда вы генерируете файл блокировки из своего pip-файла, этот файл блокировки на самом деле является файлом, который должен "заморозить" вашу зависимость от конкретной версии. Таким образом, вам не нужно беспокоиться о том, какая версия работает с вашим кодом, поскольку при распространении файла блокировки все остальные должны использовать те же версии зависимостей, что и вы. Разработчики pipenv предназначены для разработчиков использовать его следующим образом: https://github.com/pypa/pipfile/issues/7

В Pipenv изначально реализованы требования к замораживанию. Это так просто, как:

pipenv lock -r > requirements.txt

Начиная с версии 2022.8.13 pipenv, «старый»lock -rфункциональность удалена.

В дальнейшем это должно быть достигнуто с помощью:

      pipenv requirements > requirements.txt

Предполагая, что у вас активирована виртуальная среда, у вас есть три простых подхода. Я перечислю их от менее подробных к более подробным.

пип

$ pip freeze > requirements.txt

pip3

$ pip3 freeze > requirements.txt

Если виртуальная среда активна, pip наверняка эквивалентен pip3.

pipenv run

$ pipenv run pip freeze > requirements.txt
$ pipenv run pip3 freeze > requirements.txt

pipenv run порождает команду, установленную в виртуальной среде, поэтому эти команды эквивалентны тем, которые выполняются без pipenv run. Еще раз, предполагается, что ваша виртуальная среда активна.

Недавнийpipenvверсии (например, версия 2022.6.7) используютrequirementsподкоманда иpipenv lock -rне рекомендуется.

Чтобы заморозить зависимости по умолчанию

      pipenv requirements > requirements.txt

также заморозить зависимости разработки

      pipenv requirements --dev > dev-requirements.txt

Используя run Вы можете запустить данную команду из virtualenv с любыми переданными аргументами

$ pipenv run pip freeze  > requirements.txt 
      pipenv run python -m pip freeze > requirements.txt

Вот как мне pipenv подсказал сгенерировать файл requirements.txt из Pipfile проекта:

      pipenv lock --requirements

Используйте это, поскольку флаг -r устарел

      pipenv requirements > requirements.txt

Сначала убедитесь, что ваша виртуальная среда активна, затем откройте терминал и выполните команду pip3 freeze > reqirements.txt (pip3) pip3 freeze > reqirements.txt (pip3)

Вы можете создать файл require.txt с помощью этой команды:

pip3 freeze > requirements.tx
Другие вопросы по тегам