在setup.py中声明Linux特定的依赖项

3
1个回答

2

对我最初留下的评论进行一些扩展,回复建议很明智。我认为没有明确的指南说明应该采取哪些做法,但实际上,setup.py文件的一个主要目的是为运行安装脚本的代理程序获取正确的依赖项,然后以正确的方式安装包,并且通常只会运行一次,直到需要重新安装为止。话虽如此,让它变得更整洁是有意义的,所以这是我会做的。

如果您的软件包仅需要在posix系统上使用额外的依赖项,则应在setup.py文件的顶部声明类似于以下内容:

system_spec_requires = {
    'posix': ['dbus', 'gobjects',],
    # ... if others are needed
}

然后,像这样声明任何硬性要求:
requires = [
    # just random examples
    'requests',
    'requests-oauthlib',
    # ... and more
]

然后通过将系统特定的要求附加到其中来构建完整的需求列表

import os  # assuming you haven't already done that
requires.extend(system_spec_requires.get(os.name, []))

最后,在setup.py中的适当部分进行setup调用:

setup(
    ...
    requires=requires,
    ...
)

顶部的 system_spec_requires 字典看起来像某种系统特定要求的清单,我的意思是它尽可能明确地陈述了。不过,我已经见过更糟糕的 setup.py 文件了,但如果它能正确地安装包及其依赖项(尤其不会以恶意方式破坏我的系统,但你可能会在以 .decode('base64') 结尾的字符串上发现那个 eval …没错吧?),那么我就不太关心它有多糟糕。


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