如何在为python包创建setup.py文件时指定依赖项

16 python package setup.py

"编写Setupscript(http://docs.python.org/2/distutils/setupscript.html)"的python文档提到可以在section下指定依赖项

> 2.4.分布和包之间的关系

[...]可以使用distutils.core.setup()函数的关键字参数指定这些关系.

可以通过向settings()提供requires关键字参数来指定对其他Python模块和包的依赖性.该值必须是字符串列表.每个字符串指定所需的包,并且可选地指定哪些版本就足够了.

要指定需要任何版本的模块或包,字符串应完全由模块或包名组成.示例包括'mymodule'和'xml.parsers.expat'.

[...]

鉴于这个相当稀疏的信息没有示例,我只想确保我做得对.此外,我requires在API描述中找不到此参数http://docs.python.org/2/distutils/apiref.html#distutils.core.setup

它是这样完成的,例如,

setup(name='MyStuff',
      version='1.0',
      requires='os, sys, progressbar',
      [...]
Run Code Online (Sandbox Code Playgroud)

我希望有人能给我一点点洞察力!谢谢!

编辑:

为了解决distutils.core,setuptools的争议,人们可以这么做

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup
Run Code Online (Sandbox Code Playgroud)

是否有意义?

Mar*_*ers 18

忽略distutils.如果你想创建一个包,指定一个工具的依赖关系,比如pip出去找你,你需要以你setup.py的为基础setuptools.

setuptools依赖项列在install_requires,其中列出了一个列表:

setup(name='MyStuff',
      version='1.0',
      install_requires=['progressbar'],
      # ...
)
Run Code Online (Sandbox Code Playgroud)

这应该是他们自己的分布.os并且sys是Python附带的模块,不应列出.

  • 我最近对此进行了较长时间的讨论,并确信在目前的情况下,一个很好的习惯是`try:from setuptools import setup; 除了ImportError:来自distutils.core import setup`. (5认同)