В настоящее время я пишу небольшое приложение python, в которое встроены cherrypy и django, используя py2app. Он работал хорошо, пока я не попытался включить pyobjc в свой проект, так как моему приложению нужен небольшой графический интерфейс (который состоит из небольшого значка в верхней строке меню + выпадающего меню).py2app, pyObjc & macports ошибки компиляции
Я могу запустить свой скрипт python без каких-либо проблем (я использую python 2.6 с macports), но я не могу запустить пакет приложений, сгенерированный py2app. Появится диалоговое окно со следующим сообщением:
ImportError:
dlopen(/Users/denis/tlon/standalone/mac/dist/django_cherry.app/Contents/Resources/lib/python2.6/lib-dynload/CoreFoundation/_inlines.so, 2): no suitable image found.
Did find:
/Users/denis/tlon/standalone/mac/dist/django_cherry.app/Contents/Resources/lib/python2.6/lib-dynload/CoreFoundation/_inlines.so: mach-o, but wrong architecture
Я сделал быстрый:
sudo port -u install py26-pyobjc +universal
, но по некоторым причинам MacPorts пытается построить OpenSSL, с помощью которого компиляция терпит неудачу каждый раз. Похоже, проблема связана с ZLIB - это то, что появляется в журналах:
:info:build ld: warning: in /opt/local/lib/libz.dylib, file is not of required architecture
... А вот выход file /opt/local/lib/libz.dylib
:
/opt/local/lib/libz.dylib: Mach-O universal binary with 2 architectures
/opt/local/lib/libz.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
/opt/local/lib/libz.dylib (for architecture i386): Mach-O dynamically linked shared library i386
Ничто не выглядит мне неправильным.
Я немного застрял здесь. Я даже не понимаю, что openssl имеет отношение к pyObjc, но похоже, что я не могу никуда идти, если мне не удастся его скомпилировать. MacPorts действительно сосать иногда:/
EDIT мне удалось исправить MacPorts проблему, но не py2app один:/
Спасибо. На самом деле мне наконец удалось скомпилировать и запустить все. Чтобы исправить первую проблему «неправильной архитектуры», я обнаружил обходной путь, заменив библиотеки macobobe pyobjc на яблочный, который поставляется с предустановленными os и скомпилирован для разных архитектур (в/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC /) У меня есть скрипт bash, который копирует все в нужное место сразу после создания «.app» с py2app - он отлично работает в этом режиме. – Denis
НЕ редактируйте свой 'LD_LIBRARY_PATH' !! если вы должны сделать что-то подобное ... придерживайтесь '$ DYLD_FALLBACK_LIBRARY_PATH'. Кроме того, малоизвестный 'sudo update_dyld_shared_cache' - это драгоценный камень, иногда такой. –