收到“错误:在 --require-hashes 模式下,所有需求都必须固定其版本”

Suj*_*jay 3 pip requirements.txt python-3.8 pip-compile

我想使用 SHA256 哈希来安装 pip 包,并且我将所有依赖项固定在requirements.in这样的位置

apache-beam[gcp]==2.38.0
beautifulsoup4==4.10.0
bleach==4.1.0
certifi==2021.5.30
deepdiff==5.8.1
defusedxml==0.7.1
elasticsearch==7.17.0
firebase-admin==5.2.0
future==0.18.2
googledatastore==7.0.2
google-cloud-storage==2.1.0
google-auth==1.35.0
google-cloud-dataflow-client==0.3.1
google-cloud-logging==3.0.0
google-cloud-ndb==1.11.1
google-cloud-secret-manager==2.12.4
google-cloud-tasks==2.7.2
google-cloud-translate==3.6.1
gunicorn==20.1.0
html5lib==1.1
mailchimp3==3.0.15
mutagen==1.45.1
pillow==9.0.1
pylatexenc==2.10
pytest==6.2.5
PyYAML==6.0
redis==3.5.3
requests==2.26.0
requests-mock==1.9.3
requests-toolbelt==0.9.1
result==0.6.0
rsa==4.7.2
simplejson==3.17.5
six==1.16.0
soupsieve==2.3.1
typing-extensions==3.10.0.2
urllib3==1.26.7
webapp2==3.0.0b1
webencodings==0.5.1
Run Code Online (Sandbox Code Playgroud)

仅供参考,我正在使用 pip 22.1.1、python 3.8.15 和 pip-compile 6.6.2。为了生成哈希,我使用了pip-compile --generate-hashes requirements.in然后pip install --require-hashes -r requirements.txt启用哈希验证。但我收到这样的错误:

ERROR: In --require-hashes mode, all requirements must have their versions pinned with ==. These do not:
    google-api-core[grpc]<3.0.0dev,>=1.22.1 from https://files.pythonhosted.org/packages/f7/24/a17e75c733609dce285a2dae6f56837d69a9566963c9d1cab96d788546c8/google_api_core-2.11.0-py3-none-any.whl (from firebase-admin==5.2.0->-r requirements.txt (line 179))
Run Code Online (Sandbox Code Playgroud)

请帮助我了解此错误的原因以及如何解决它。谢谢

我希望安装依赖项(带有哈希验证)而不会出现任何错误。

Suj*_*jay 5

这似乎仍然是 pip 的问题,我发现这个问题准确地说明了我想要指出的内容。google-api-core在我的问题的这些错误日志中,pip 安装了版本已固定的最新版本。更有可能是因为那个额外的grpc.

两种解决方案对我有用。

  1. 使用--no-depswhich 将阻止 pip 在安装时查找依赖项。我认为这是有道理的,因为在生成需求文件时已经解决了依赖关系。命令将是

pip install --require-hashes --no-deps -r requests.txt

  1. 使用--use-deprecated=legacy-resolver选项和命令将是

pip install --require-hashes --use-deprecated=legacy-resolver -r requests.txt