py2app,pyObjc& macports编译错误

时间:2010-06-16 08:55:15

标签: python macports pyobjc py2app

我正在编写一个使用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问题:/

1 个答案:

答案 0 :(得分:0)

我猜这是因为所需的库不在你的库路径中,所以加载器无法弄清楚它在哪里,所以它可以链接符号。你应该做两件事之一:

  1. 启动应用时,将/opt/local/lib添加到$LD_LIBRARY_PATH环境变量中;或
  2. 使用.app文件捆绑相应的库。