You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在requirements.txt中合理冻结Python包版本?以PyJWT[crypto]为例

问题

我通过pip install pyjwt[crypto]安装了Python包,执行pip freeze后显示出多个关联依赖包。我希望在requirements.txt中仅写入重建开发环境所需的内容,避免冗余,想询问是否只需写入PyJWT[crypto]==2.8.0即可?我担心写入过多内容会增加未来安装其他包的难度。

安装后pip输出内容:

...
pyjwt[crypto] in ..\site-packages (2.8.0)
cryptography>=3.4.0 in ..\site-packages (from pyjwt[crypto]) (41.0.4)
cffi>=1.12 in ..\site-packages (from cryptography>=3.4.0->pyjwt[crypto]) (1.16.0)         
pycparser in ..\site-packages (from cffi>=1.12->cryptography>=3.4.0->pyjwt[crypto]) (2.21)
...

pip freeze输出内容:

...
cffi==1.16.0        
cryptography==41.0.4
pycparser==2.21
PyJWT==2.8.0
...

答案

  • 完全可以只在requirements.txt中写入PyJWT[crypto]==2.8.0。执行pip install -r requirements.txt时,pip会自动解析并安装该包的所有依赖项(包括cryptography、cffi、pycparser等),无需手动添加这些子依赖。
  • 不建议写入所有依赖的原因:硬编码子依赖的具体版本号会限制环境灵活性,未来如果其他项目依赖需要不同版本的cryptography或cffi时,固定的版本号会引发版本冲突,反而增加安装其他包的难度。
  • 补充说明:如果是需要绝对一致的生产环境,才推荐用pip freeze生成完整依赖;但开发环境优先保留直接依赖即可,让pip自动处理子依赖的兼容版本选择,减少维护负担。

内容的提问来源于stack exchange,提问作者testo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 06:41:30