У меня возникают трудности с распространением пакета python в OS X. Он написан на C ++ и использует boost_python для генерации .so, который можно импортировать в Python. Проблема заключается в том, что версия разделяемой библиотеки Python, на которую указывает .so, должна соответствовать версии интерпретатора Python, в которую она импортируется, вплоть до вспомогательной версии.
Например, если .so указывает на установку Python по умолчанию для OS X (/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 для исправления, не идеально. Есть ли способ избежать этой проблемы?