Как заставить Python загрузить DYLIB на OSX - PullRequest
7 голосов
/ 21 марта 2010

Попытка загрузить общую библиотеку из текущей '.'dir в модульном тесте на osx.

Что работает в Linux и Netbsd, есть символическая ссылка _mymodule.so --> ../.libs/libmymodule.so

, но на osx Python import mymodule не найдет

_mymodule.dylib --> ../.libs/libmymodule.dylib

Я пытался добавить

export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH

в скрипт env, nogo.Любая помощь приветствуется.

-Ed

обновление 4/6/10:

Решено с помощью информации от Крунка ниже.Но простое копирование или добавление dylib в имя .so не решило его полностью.Все равно не загрузится.Но указание libtool связать библиотеку с флагом -module создало .so lib, которая будет загружаться.Python-версия библиотеки теперь работает.

Теперь, если бы я мог просто заставить работать Perl-библиотеку.Я создаю swig perl, python, ruby ​​и lua libs, и это исправление только заставило работать python и lua.

1 Ответ

13 голосов
/ 06 апреля 2010

Просто используйте * .so в качестве расширений вашего модуля в OS X. У меня смутное воспоминание о невозможности загрузки .dylib, и это оказалось проблемой с самим питоном. , , но я не могу сейчас найти список рассылки.

Однако будьте уверены, что вы следуете стандартной практике, используя * .so даже в OS X. Единственные * .dylib во всей среде - это libsvn_swig.

find /System/Library/Frameworks/Python.framework/Versions/2.6/ -name "*.so"

/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/X11/xcb/xcb.0.0.0.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/X11/xcb/xcb.0.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/X11/xcb/xcb.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/CoreGraphics/_CoreGraphics.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/OpenSSL/SSL.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/OpenSSL/crypto.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/OpenSSL/rand.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_appmain.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_carbon.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_inlines.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_nsbezierpath.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_nsbitmap.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_nsfont.so
 /System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_nsquickdrawview.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_nsview.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_nswindow.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/CFNetwork/_manual.so
...