我可以让python包依赖于OS的不同包吗?

2024-04-29 15:51:25 发布

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

我正在处理一个需要^{}的包。Windows不支持此程序包。对于Windows,我使用从^{}派生的旧包sh,并在我的命名空间中将其重命名为sh。你知道吗

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

编辑:经过一些研究,我的问题是针对my answer所反映的新wheel格式的。如果我搞不懂轮子是怎么工作的,将来我会问另一个问题。你知道吗


Tags: answerpy程序包编辑mywindowsshsetup
2条回答

是的!只需将代码放在系统平台变量,例如:

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

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

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

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

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

最近出现这种情况的原因是因为发布了新的wheel格式。我的理解是,这种新格式不随包提供setup.py,而是使用其他方法处理依赖关系。你知道吗

在我了解如何使用条件依赖性来发布轮子之前,我不会为这个项目生成轮子。你知道吗

相关问题 更多 >