例如,我们有一些 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"
Pipenv 本身就实现了冻结 requirements.txt。它很简单:
pipenv lock -r > requirements.txt
假设您激活了虚拟环境,您有三种简单的方法。我将把它们从不太冗长到更冗长列出。
$ pip freeze > requirements.txt
$ pip3 freeze > requirements.txt
如果虚拟环境处于活动状态,pip则肯定等同于pip3.
$ pipenv run pip freeze > requirements.txt
$ pipenv run pip3 freeze > requirements.txt
pipenv run生成安装到虚拟环境中的命令,因此这些命令等同于不带pipenv run. 再次假设您的虚拟环境处于活动状态。
通过使用run您可以从 virtualenv 运行给定的命令,并转发任何参数
$ pipenv run pip freeze > requirements.txt
这就像更改django = "*"为一样简单django = "your-preferred-version"。因此,如果您想将其冻结为 2.1,即撰写本文时的最新版本,您可以这样做:
[packages]
django="2.1"
Git repo 有一些很好的pipfile例子来说明指定版本字符串的不同方法:https ://github.com/pypa/pipfile#pipfile
请注意,当您从 pipfile 生成锁定文件时,该锁定文件实际上是应该将您的依赖项“冻结”到特定版本的文件。这样,您不必担心哪个版本适用于您的代码,因为通过分发锁文件,其他所有人都必须使用与您相同的依赖版本。pipenv 的开发人员打算让开发人员像这样使用它
首先,确保您的虚拟环境处于活动状态,然后打开终端并运行命令 pip3 freeze > reqirements.txt (pip3) pip3 freeze > reqirements.txt (pip3)
这是 pipenv 提示我从项目的 Pipfile 生成 requirements.txt 文件的方式:
pipenv lock --requirements
您可以使用以下命令创建 requirements.txt:
pip3 freeze > requirements.txt