如何让setup.py列出依赖项?

时间:2017-07-05 16:20:25

标签: python setuptools packaging setup.py

我有一个第三方软件包,其中setup.py文件以标准方式调用setup(),传递test_requiresinstall_requiresextras_require。 (它不使用requirements.txt文件。)

我正在运行一台Windows机器(在Appveyor上),并且pip install在Windows上的一些软件包出了名。我想用Conda。

在我看来,理想的进行方式是:

  1. 要求setup.py列出所需的依赖项,而不采取任何措施。
  2. 将该列表传递给conda进行安装。
  3. 使用installtest命令调用setup.py,确信它会检查其要求,但找不到需要安装的任何内容。
  4. 我认为python setup.py --requires可能会做到这一点,但是文档记录很少并且什么也没有返回。

    如果这是一个合理的方法?如果是这样,有没有办法要求setup.py评估其依赖关系,并列出它们而不安装它们。

2 个答案:

答案 0 :(得分:5)

python setup.py egg_info将编写一个package_name.egg-info/requires.txt文件,其中包含您想要的依赖项。

答案 1 :(得分:2)

您可以获得distutils来阅读setup.py并返回相关性。命令distutils.core.run_setup允许您在受控环境中运行setup.py

import distutils.core
setup = distutils.core.run_setup("setup.py")
print(setup.install_requires)

Python变量setup具有一组属性,可让您戳setup.py