在中声明特定于linux的依赖项设置.py

2024-09-27 23:18:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个软件包(Skype4Py),它根据操作系统有不同的依赖关系。这是因为它依赖操作系统消息总线将自己绑定到Skype。在

在Python包中声明特定于操作系统的依赖关系的正确方法是什么(即,设置.py)? 在

https://github.com/ProgVal/skype4py/commit/06aff9202e5fa8ad90a7bacc6ee1882ce10663dd#commitcomment-7377819


Tags: 方法pyhttpsgithubcom声明消息关系
1条回答
网友
1楼 · 发布于 2024-09-27 23:18:20

对我最初留下的评论进行了扩展,回复中的建议是明智的。我不认为应该有明确的指南来说明应该做什么,但是实际上,setup.py文件的一个主要点是为运行安装脚本的代理获取正确的依赖关系,然后以正确的方式正确安装包,通常只运行一次,直到需要时才会忘记重新安装。也就是说,把它弄得更整洁是有意义的,所以我要做的就是。在

如果您的包只需要posix系统上的一组额外的依赖项,我将在setup.py文件的顶部附近声明类似的内容

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

然后声明任何硬要求,如:

^{pr2}$

然后通过将特定于系统的需求添加到需求列表中,构建完整的需求列表

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

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

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

顶部的system_spec_requires字典使它看起来像某种特定于系统的需求的清单,我的意思是它看起来尽可能清楚地说明。实际上,我已经看到了nastier setup.py文件,但是如果它正确地完成了任务(即安装带有其依赖项的包)的话(尤其是不会恶意地破坏我的系统,但是你可能会在某个以.decode('base64')结尾的字符串上发现{}。。。对吗?)我真的不在乎它看起来有多糟。在

相关问题 更多 >

    热门问题