如何在python中使用setup.py来固定传递依赖?

时间:2017-06-09 03:41:43

标签: python packaging

python3-saml库在setup.py

中提到了以下依赖项
install_requires=[
    'isodate>=0.5.0',
    'xmlsec>=0.6.0'
],

xmlsec库本身有一个像这样固定的lxml依赖项。

lxml >= 3.0

这让我陷入了不幸的境地。

我想确定python3-saml项目使用的lxml版本。 我可以派python3-saml,但是我该怎么办才能使我的分叉版本python3-xml安装lxml==3.7.3

1 个答案:

答案 0 :(得分:0)

我认为您混淆了 setup.py install_requires 的目的。包维护者使用它来指定兼容的依赖版本,而不是" pin"版本。请参阅install_requires vs Requirements files

请注意,您在此处的两个 setup.py 文件中看到的依赖关系不是"固定",因为它们允许多个版本。请参阅PEP 440 Version Specifiers

如何安装特定版本

使用pip来管理已安装版本的软件包和传递依赖项。

$ pip install python3-saml lxml==3.7.3

现在我们可以看到安装了所需的版本。

$ pip freeze
defusedxml==0.5.0
isodate==0.6.0
lxml==3.7.3
pkgconfig==1.2.2
python3-saml==1.3.0
six==1.11.0
xmlsec==1.3.3