如何在setup.py中指定Python包的显式依赖项?

7
我想创建一个名为mycode的Python包,可以使用pipsetup.py)进行安装,并且依赖于另一个包base。为了将此包依赖项纳入考虑,我按照setup.py说明中的步骤,在setup.pysetup函数中创建了一个条目,内容如下:
'requires': ['base']

我使用python setup.py sdist命令创建了一个软件包,然后尝试使用pip install进行安装。虽然成功安装了mycode,但是base没有安装成功。看起来setup.py文件中requires条目被忽略了。

有什么想法吗?

1个回答

10
你需要指定install_requires,参见新的和更改的setup关键字
由于requires字段过于模糊不清,所以setuptools团队(也就是easy_install,从中发展出了pip)添加了更具体的字段。此外,还有setup_requirestest_requires字段,用于setup.py所需的依赖项和运行测试。

谢谢,这似乎有效!但是这是否意味着我链接的文档不可用?这不是官方文档的一部分吗? - Alex
pip 遵循 setuptools 包装的宇宙。 setuptools 的分支 distribute良好的文档,还有 Hitchhikers Guide to Packaging - Martijn Pieters
是的,“distutils”文档对于“distutils”是正确的,但是“setuptools”已经超越了“distutils”。有/曾经有一个名为“distutils2”的项目来解决这个问题,但目前该项目已经停滞不前。 - Martijn Pieters
好的,我可能明白了。由于pip等(以及setup.py)不是标准Python库的一部分,或者已经被上述包更改,因此它超出了“标准”Python的范围,我必须在特定的网站上查找。Python打包真的很令人困惑。我迫切地等待distutils2的到来... - Alex
1
它确实是一件遗憾的事情,distutils2 的努力已经停滞不前了。那个努力中蕴含了很多使用 distribute 分支的经验,我非常希望它能够进入 Python 标准库的 3.x 系列。 - Martijn Pieters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接