ошибки компиляции py2app, pyObjc & macports - PullRequest
1 голос
/ 16 июня 2010

В настоящее время я пишу небольшое приложение на python, которое встраивает cherrypy и django, используя py2app.Он работал хорошо, пока я не попытался включить pyobjc в свой проект, так как моему приложению требовался небольшой графический интерфейс пользователя (который состоит из небольшого значка в верхней строке меню + выпадающего меню).

Я могу запустить свой 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 one: /

1 Ответ

0 голосов
/ 21 июня 2010

Полагаю, это потому, что нужной библиотеки нет в пути к вашей библиотеке, поэтому загрузчик не может определить, где он находится, и поэтому может связать символы. Вам следует сделать одну из двух вещей:

  1. Добавить /opt/local/lib в переменную среды $LD_LIBRARY_PATH при запуске приложения;или
  2. Объедините соответствующие библиотеки с файлом .app.
...