我目前正在編寫一個使用py2app嵌入cherrypy和django的小型python應用程序。 它運行良好,直到我試圖在我的項目中包含pyobjc,因爲我的應用程序需要一個小GUI(它由頂部菜單欄+下拉菜單中的小圖標組成)。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的真正有時吸:/
編輯我設法解決MacPorts的問題,但不是py2app之一:/
謝謝。其實我終於設法編譯並讓所有的東西都運行起來。 爲了解決第一個「錯誤的體系結構」問題,我找到了一個解決方法,用蘋果機替換了macports pyobjc庫,它預裝了os併爲不同的體系結構編譯(在/ System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC /) 我有一個bash腳本,在py2app建立「.app」之後,它將所有東西都複製到正確的位置。 – Denis 2010-06-22 23:54:55
不要編輯你的'LD_LIBRARY_PATH'!如果您必須執行此類操作......請堅持'$ DYLD_FALLBACK_LIBRARY_PATH'。另外,很少有人知道的'sudo update_dyld_shared_cache'是一個寶石,有時是這樣的。 – 2011-09-11 14:34:42