【问题标题】:Can I make a python package depend on different packages by OS?我可以使 python 包依赖于操作系统的不同包吗?
【发布时间】:2014-02-17 17:33:05
【问题描述】:

我正在开发一个需要sh 的包。 Windows 不支持此软件包。对于 Windows,我使用从 pbs 派生的旧包 sh,并在我的命名空间中将其重命名为 sh

如何创建一个setup.py,以便在 Windows 上正确安装 pbs,在其他平台上正确安装 sh

编辑: 经过一番研究,事实证明我的问题是针对 my answer 所反映的新 wheel 格式的。如果我不知道轮子应该如何工作,我以后会问一个不同的问题。

【问题讨论】:

  • 在调用 setup 之前检查类似 sys.platform 的内容

标签: python setuptools python-wheel


【解决方案1】:

是的!只需将您的代码放在 sys.platform 变量的条件块中,例如:

import sys
if (sys.platform=='win32'):
    import somewindowsmodule
elif (sys.platform=='macOSX'):
    import somemacmodule
elif (sys.platform=='linux'):
    import somelinuxmodule

我不确定 mac 或 linux 的平台字符串是什么,但你可以弄清楚,我敢肯定。此外,为了保护无辜者,某些模块名称都是虚构的。 :)

【讨论】:

  • 您是否建议将此代码放入setup.py?我的问题是关于安装依赖项。
【解决方案2】:

好的,原来我原来的解决方案正确的:

# setup.py
...
setup(
...

    install_requires=["pbs" if os.name == 'nt' else "sh"]
...
)

最近发生这种情况的原因是由于以新的wheel 格式发布。我的理解是,这种新格式不会随您的包附带 setup.py,而是使用其他方式处理依赖关系。

在我了解如何发布带有条件依赖的轮子之前,我不会为这个项目生产轮子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-21
    • 2012-07-15
    • 1970-01-01
    • 2019-10-27
    • 2021-03-23
    • 2011-08-31
    • 1970-01-01
    • 2014-09-07
    相关资源
    最近更新 更多