我如何要求 setup.py 列出依赖项?

How can I ask setup.py to list dependencies?

我有一个第三方包,它有一个 setup.py 文件,它以标准方式调用 setup(),传递 test_requiresinstall_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 评估其依赖项,并在不安装它们的情况下列出它们。

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

您可以 distutils 读取 setup.py 和 return 您的依赖项。命令 distutils.core.run_setup 允许您在受控环境中 运行 setup.py:

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

Python 变量 setup 有一组属性可以让你戳 setup.py