我在OS X上分发python包时遇到了一些困难。它是用C ++编写的,它使用boost_python生成一个.so,可以将其导入Python。问题是.so指向的共享Python库的版本必须与要导入的Python解释器的版本匹配-直到次要版本。
例如,如果.so指向默认的OS X Python安装(/System/Library/Frameworks/Python.framework/Versions/2.7/Python(2.7.10版)),我尝试将其导入到其他Python解释器(2.7.15),它将崩溃并显示以下错误:
Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6
经过研究,我了解到可以通过使用install_name_tool更改.so上的共享库安装名称来解决该问题,以指向与解释器匹配的Python安装。
但是,似乎应该有一种更好的方法来解决此问题。让用户弄清楚他们正在运行哪个Python以及从何处运行,然后使用install_name_tool进行修复是不理想的。有办法彻底避免这个问题吗?