从pip的需求说明符文档中,您可以组合这些形式:
SomeProject == 1.3
SomeProject >=1.2,<2.0
SomeProject[foo, bar]
这意味着您可以执行以下命令:
pipenv install "django[argon2]==2.1.5"
生成此 Pipfile 条目:
django = {version = "==2.1.5", extras = ["argon2"]}
该命令安装 Django 并:
- 将 Django 固定在 2.1.5 版本(或任何指定为
==VERSION
)
- 包括 Django 对 Argon2 的可选支持
没有argon2
包裹。这[argon2]
意味着它是 Django 的可选依赖项或可选功能。安装的是argon2-cffi
和cffi
包,它们是 Django 使用 Argon2 所需的可选依赖项。您可以在 Pipfile.lock 中看到这一点:
"argon2-cffi": {
"hashes": [
...
],
"version": "==20.1.0"
},
"cffi": {
"hashes": [
...
],
"version": "==1.14.6"
},
"django": {
"extras": [
"argon2"
],
"hashes": [
...
],
"index": "pypi",
"version": "==2.1.5"
},
Django 文档中也提到了这一点:
要将 Argon2 用作默认存储算法,请执行以下操作:
- 这可以通过运行来完成
python -m pip install django[argon2]
,这相当于python -m pip install argon2-cffi
(以及来自 Django 的任何版本要求setup.cfg
)
与安装和单独(与其他答案pipenv install django[argon2]
一样)相比,这样做的区别在于,在安装过程中,您让 Django 的 setuptools 决定使用哪个版本。这更好,因为 Django 维护人员可能使用兼容版本的.django
argon2-cffi
argon2-cffi
argon2-cffi
这可以在Django 的 setup.cfg文件中看到(在撰写本文时针对 Django 3.2.6):
[options.extras_require]
argon2 = argon2-cffi >= 19.1.0
这表明当使用可选[argon2]
功能时,它需要安装该范围的argon2-cffi
. 正如James O' Brien 评论的那样:“特定版本的 django 需要特定版本的附加功能。 ”