py2app、pyObjc和macports编译错误
我现在正在写一个小的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有时候真的很糟糕 :/
编辑 我解决了macports的问题,但py2app的问题还是没解决 :/
1 个回答
0
我猜是因为一个必需的库没有在你的库路径里,所以加载器找不到它,无法链接相关的符号。你可以做两件事:
- 在启动应用程序时,把
/opt/local/lib
加入到你的$LD_LIBRARY_PATH
环境变量中;或者 - 把合适的库和
.app
文件打包在一起。