如何使用 pipenv 冻结需求?

How to freeze a requirement with pipenv?

例如,我们有一些 pipfile(如下),我想冻结 django 版本。我们没有 requirements.txt,我们只使用 pipenv。如何冻结 django 版本?

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

[packages]
django = "*"

[dev-packages]
black = "*"

[requires]
python_version = "3.6"

django = "*"改成django = "your-preferred-version"就这么简单。因此,如果您想将其冻结到 2.1,即撰写本文时的最新版本,您可以这样做:

[packages]
django="2.1"

pipfile Git 存储库有一些很好的例子,说明了指定版本字符串的不同方式:https://github.com/pypa/pipfile#pipfile

请注意,当您从 pipfile 生成锁定文件时,该锁定文件实际上是应该“冻结”您对特定版本的依赖项的文件。这样,您就不必担心哪个版本适用于您的代码,因为通过分发锁文件,其他人必须使用与您相同的依赖版本。 pipenv 的开发者旨在让开发者使用它 like this

Pipenv 本机实现冻结 requirements.txt。 很简单:

pipenv lock -r > requirements.txt

您可以使用此命令创建 requirements.txt:

pip3 freeze > requirements.txt

通过使用 run 您可以 运行 从 virtualenv 给定命令,并转发任何参数

$ pipenv run pip freeze  > requirements.txt 

假设您已激活虚拟环境,您可以采用三种简单的方法。我会从不详细到详细列出它们。

点子

$ pip freeze > requirements.txt

pip3

$ pip3 freeze > requirements.txt

如果虚拟环境处于活动状态,pip 肯定等同于 pip3

pipenv 运行

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

pipenv run 生成安装到虚拟环境中的命令,因此这些命令等同于没有 pipenv run 的 运行。再次假设您的虚拟环境处于活动状态。

首先,确保您的虚拟环境处于 活动状态 然后打开终端并 运行 命令 pip3 冻结 > reqirements.txt (pip3) pip3 冻结 > reqirements.txt (pip3)

这是 pipenv 提示我从项目的 Pipfile 生成 requirements.txt 文件的方式:

pipenv lock --requirements