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

Odd*_*ing 4 python packaging setuptools setup.py

我有有一个第三方包setup.py调用文件setup()的标准方式,传递test_requires,install_requiresextras_require.(它不使用requirements.txt文件.)

我正在运行Windows机器(在Appveyor上),并且pip install在Windows上使用某些软件包时出了名.我想用Conda.

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

  1. 请求setup.py列出所需的依赖项,而不采取任何操作.
  2. 将该列表传递给conda进行安装.
  3. 使用installtest命令调用setup.py ,确信它将检查其要求,而不是找到它需要安装的任何内容.

我认为python setup.py --requires可能会做到这一点,但它的记录很少,并且什么也没有返回.

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

Ghi*_*ADJ 6

python setup.py egg_info将编写一个package_name.egg-info/requires.txt包含所需依赖项的文件.

  • 我注意到可选要求的格式与 PIP/Conda 不兼容。 (3认同)

aja*_*ali 6

您可以distutils阅读setup.py并返回依赖项。该命令distutils.core.run_setup允许您setup.py在受控环境中运行:

import distutils.core
setup = distutils.core.run_setup("setup.py")
print(setup.install_requires)
Run Code Online (Sandbox Code Playgroud)

Python 变量setup有一组允许你戳的属性setup.py