我试着把这个放在我的容器里:
pip install python-jose[cryptography]作为一个测试,我在一个虚拟的env中运行了这个程序,得到了:
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中,我只需要:
python-jose==3.3.0但我很想知道如何才能为子包保留相同的版本。
也就是这样的东西:
python-jose[cryptography==3.4.7]==3.30但想想我在做什么..。
发布于 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会为您做这件事(看起来您已经知道了)。
当然,这并不是您希望让其他人集成到他们自己的代码中的库,但是在部署应用程序时,这绝对是您想要做的事情。
这个博客是很好的一般阅读需求文件。
https://stackoverflow.com/questions/68763275
复制相似问题