如何用括号固定 pipenv 要求?

vol*_*gas 8 python django argon2-ffi pipenv

我已经做了:

pipenv install django[argon2]
Run Code Online (Sandbox Code Playgroud)

这改变了我的Pipfile

-django = "==2.1.5"
+django = {extras = ["argon2"],version = "*"}
Run Code Online (Sandbox Code Playgroud)

我想固定要求。首先,我将固定django2.1.5

django = {extras = ["argon2"],version = "==2.1.5"}
Run Code Online (Sandbox Code Playgroud)

怎么样argon2?那是单独的包裹吗?当我这样做时没有这样的包pip freeze

$ pip freeze  | grep -i argon2
argon2-cffi==19.1.0
Run Code Online (Sandbox Code Playgroud)

那是什么?我如何完全固定django[argon2]

ti7*_*ti7 9

在我的 中Pipfile,我发现通过双引号包和版本可以做到这一点

[packages]
"django[argon2]" = "==2.1.5"
Run Code Online (Sandbox Code Playgroud)


Gin*_*pin 6

从pip 的需求说明符文档中,您可以组合这些形式:

\n
\n
SomeProject == 1.3  \nSomeProject >=1.2,<2.0  \nSomeProject[foo, bar]\n
Run Code Online (Sandbox Code Playgroud)\n
\n

这意味着您可以执行以下命令:

\n
pipenv install "django[argon2]==2.1.5"\n
Run Code Online (Sandbox Code Playgroud)\n

它生成这个 Pipfile 条目:

\n
django = {version = "==2.1.5", extras = ["argon2"]}\n
Run Code Online (Sandbox Code Playgroud)\n

该命令安装 Django 并:

\n
    \n
  1. 将 Django 固定在版本 2.1.5(或指定为 的任何版本==VERSION
  2. \n
  3. 包括Django 对 Argon2 的可选支持
  4. \n
\n

没有argon2包裹。这[argon2]意味着它是Django 的可选依赖项或可选功能。安装的是argon2-cfficffi软件包,它们是 Django 使用 Argon2 所需的可选依赖项。您可以在 Pipfile.lock 中看到这一点:

\n
"argon2-cffi": {\n    "hashes": [\n        ...\n    ],\n    "version": "==20.1.0"\n},\n"cffi": {\n    "hashes": [\n        ...\n    ],\n    "version": "==1.14.6"\n},\n"django": {\n    "extras": [\n        "argon2"\n    ],\n    "hashes": [\n        ...\n    ],\n    "index": "pypi",\n    "version": "==2.1.5"\n},\n
Run Code Online (Sandbox Code Playgroud)\n

Django 文档中也提到了这一点:

\n
\n

要使用 Argon2 作为默认存储算法,请执行以下操作:

\n
    \n
  1. 这可以通过运行 来完成python -m pip install django[argon2],这相当于python -m pip install argon2-cffi(以及 Django\xe2\x80\x99s 中的任何版本要求setup.cfg
  2. \n
\n
\n

pipenv install django[argon2]与安装djangoargon2-cffi单独(与另一个答案一样)相比,这样做的区别在于,在安装过程中,您让 Django 的 setuptools 决定argon2-cffi使用哪个版本。这更好,因为 Django 维护者可能使用兼容版本编写并测试了 Argon2 支持的代码argon2-cffi.

\n

这可以在Django 的 setup.cfg中看到(针对撰写本文时的 Django 3.2.6):

\n
[options.extras_require]\nargon2 = argon2-cffi >= 19.1.0\n
Run Code Online (Sandbox Code Playgroud)\n

这表明使用可选[argon2]功能时需要安装该范围的版本argon2-cffi。正如James O\' Brien 评论的那样:“特定版本的 django 将需要特定版本的附加功能。

\n


Ale*_* Yu 0

如果您想完全控制,您可以:

Pipenv 安装“django==2.1.5”“argon2-cffi==19.1”

这是你需要的吗?