首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在requirements.txt中只包含包的一部分

如何在requirements.txt中只包含包的一部分
EN

Stack Overflow用户
提问于 2021-08-12 19:37:46
回答 1查看 849关注 0票数 2

我试着把这个放在我的容器里:

代码语言:javascript
复制
pip install python-jose[cryptography]

作为一个测试,我在一个虚拟的env中运行了这个程序,得到了:

代码语言:javascript
复制
cffi==1.14.6
cryptography==3.4.7
ecdsa==0.17.0
pyasn1==0.4.8
pycparser==2.20
python-jose==3.3.0
rsa==4.7.2
six==1.16.0

通常,在requirements.txt中,我只需要:

代码语言:javascript
复制
python-jose==3.3.0

但我很想知道如何才能为子包保留相同的版本。

也就是这样的东西:

代码语言:javascript
复制
python-jose[cryptography==3.4.7]==3.30

但想想我在做什么..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-12 19:50:07

因此,cryptography中的python-jose[cryptography]通常不是其他一些Python包的名称。在这种情况下,它是,但您可以定义任何一组额外的,您想要命名为您想要的包。例如,您可以拥有用于开发需求的my-package[dev]。请参见python-jose如何定义这些额外需求这里。同样,它们通常是其他Python包,但并不总是这样,所以您所要求的并不是一般能够工作的东西。

现在,当您只想指定您的应用程序的需求时,为顶级依赖项固定版本的requirements.txt通常会做得很好。但在你的例子中,听起来你想要完全冻结环境。在这种情况下,指定所有依赖项(包括传递依赖项)的版本是非常合理的。python -m pip freeze > requirements.txt会为您做这件事(看起来您已经知道了)。

当然,这并不是您希望让其他人集成到他们自己的代码中的库,但是在部署应用程序时,这绝对是您想要做的事情。

这个博客是很好的一般阅读需求文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68763275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档