我可以通过操作系统使python包依赖于不同的包吗?



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

如何创建可在 Windows 上正确安装pbs并在其他平台上正确安装shsetup.py

编辑:经过一些研究,事实证明我的问题特定于新的车轮格式,因为我的答案反映了。如果我无法弄清楚轮子应该如何工作,将来我会问一个不同的问题。

是的! 只需将您的代码放在 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
...
setup(
...
install_requires=["pbs" if os.name == 'nt' else "sh"]
...
)

最近打破的原因是由于以新的车轮格式发布。我的理解是,这种新格式不会随包一起提供setup.py,而是使用其他方式处理依赖项。

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

最新更新