如何用pipenv冻结需求?

Har*_*oli 5 python pipenv pipfile

例如,我们有一些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"
Run Code Online (Sandbox Code Playgroud)

小智 115

从Pipenv v2022.8.13lock -r开始,“旧”功能已被删除。

展望未来,这应该通过以下方式完成:

pipenv requirements > requirements.txt
Run Code Online (Sandbox Code Playgroud)

  • 这应该成为新的公认答案。 (9认同)

小智 23

Pipenv本身会执行冻结需求。它很简单:

pipenv lock -r > requirements.txt
Run Code Online (Sandbox Code Playgroud)

  • 此方法已弃用,我们应该使用 `pipenvrequirements>requirements.txt` 代替,请参阅 https://pipenv.pypa.io/en/latest/advanced/#generate-a-requirements-txt 和 [ARDVL 的答案](https ://stackoverflow.com/a/72684458/322283)。 (82认同)

小智 19

最新pipenv版本(例如版本 2022.6.7)正在使用子requirements命令,并且pipenv lock -r已弃用。

冻结默认依赖项

pipenv requirements > requirements.txt
Run Code Online (Sandbox Code Playgroud)

也冻结开发依赖项

pipenv requirements --dev > dev-requirements.txt
Run Code Online (Sandbox Code Playgroud)


lmi*_*asf 18

假设您激活了虚拟环境,您可以使用三种简单的方法。我将从较不详细到较详细的顺序列出它们。

点子

$ pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

pip3

$ pip3 freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

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

管道运行

$ pipenv run pip freeze > requirements.txt
$ pipenv run pip3 freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

pipenv run生成安装到虚拟环境中的命令,因此这些命令等效于不带pipenv run. 再次假设您的虚拟环境处于活动状态。


bka*_*wan 6

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

$ pipenv run pip freeze  > requirements.txt 
Run Code Online (Sandbox Code Playgroud)