例如,我们有一些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 repo有一些很好的例子来指定版本字符串:https://github.com/pypa/pipfile#pipfile
请注意,当您从pipfile生成锁定文件时,该锁定文件实际上是应该将您的依赖关系“冻结”到特定版本的文件。这样,您不必关心哪个版本适用于您的代码,因为通过分发锁定文件,其他人必须使用与您相同的依赖版本。 pipenv的开发人员打算让开发人员像这样使用它:https://github.com/pypa/pipfile/issues/7
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 freeze > requirements.txt
如果虚拟环境处于活动状态,pip
肯定等同于pip3
。
$ pipenv run pip freeze > requirements.txt
$ pipenv run pip3 freeze > requirements.txt
pipenv run
生成一个安装在虚拟环境中的命令,因此这些命令等同于没有pipenv run
的命令。再一次,假设您的虚拟环境处于活动状态。