如何在Python3中安全地创建和导入.so文件?

2024-04-19 21:47:29 发布

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

我正在尝试使用Cython从我们的.py文件创建.so二进制文件,并与我们的团队共享。 然而,即使我们都使用Python3,大多数情况下它应该是完全相似的修订版(让我们说3.7.8),否则我们会在导入它们时出错。 这是预期的行为吗

有些修订是兼容的。例如,如果我们使用Python3.5.2并在3.6.8中导入.so,它可以工作,但在3.7.8中不工作

这种混乱是从哪里来的?最安全的方法是什么


Tags: 文件方法pyso二进制情况团队cython
1条回答
网友
1楼 · 发布于 2024-04-19 21:47:29

跟进我的意见:

  • 在同一平台上,扩展模块应在“次要版本”内工作(即使用3.7.2和3.7.3构建的模块应兼容)。不过,我正在努力寻找这方面的来源。除此之外,在过去已经做出了一些努力来确保版本之间的兼容性,但是not so much any more因此,您可能很幸运,并且一切正常

  • distutils/setuptools和其他类似的构建机制tag extension modules with a suffix indicating the version and some other details。例如,和扩展名将被称为foo.cpython-37m.so,而不仅仅是foo.so。这些标记防止模块与其他Python版本一起使用,这是一件好事如果你正在移除这些标签,那么这一切都是你的责任

  • Python现在定义了跨Python版本兼容的a more limited stable ABI。Cython正在努力支持这一点,但目前它还没有处于可用状态。在一年左右的时间里,这应该是一个很好的解决方案

总之,.so文件不能在不同的Python版本之间移植。您应该在Python版本上进行标准化,或者在本地构建.so文件

相关问题 更多 >