我正在编写一个使用py2app嵌入cherrypy和django的小型python应用程序。 它运行良好,直到我试图在我的项目中包含pyobjc,因为我的应用程序需要一个小的GUI(由顶部菜单栏中的一个小图标+一个下拉菜单组成)。
我可以毫无问题地运行我的python脚本(我正在使用带有macports的python 2.6),但我无法启动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问题:/
答案 0 :(得分:0)
我猜这是因为所需的库不在你的库路径中,所以加载器无法弄清楚它在哪里,所以它可以链接符号。你应该做两件事之一:
/opt/local/lib
添加到$LD_LIBRARY_PATH
环境变量中;或.app
文件捆绑相应的库。