我可以通过OS制作一个python包依赖于不同的包吗?

时间:2014-01-27 00:53:26

标签: python setuptools python-wheel

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

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

编辑:经过一些研究后,我发现我的问题是针对新wheel格式所特有的my answer反映的。如果我不知道轮子应该如何工作,我将来会问一个不同的问题。

2 个答案:

答案 0 :(得分:3)

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

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

我不确定mac或linux的平台字符串是什么,但你可以解决这个问题,我敢肯定。此外,有些模块名称都是虚构的,以保护无辜者。 :)

答案 1 :(得分:2)

好的,事实证明我的原始解决方案 正确:

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

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

最近爆发的原因是由于以新的wheel格式发布。我的理解是这种新格式不会在您的包中发送setup.py并使用其他方法处理依赖关系。

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