1

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

4

1 回答 1

0

我猜这是因为所需的库不在您的库路径中,因此加载器无法确定它的位置,因此它可以链接符号。您应该做以下两件事之一:

  1. 启动应用程序时添加/opt/local/lib到您的环境变量;$LD_LIBRARY_PATH或者
  2. 将适当的库与.app文件捆绑在一起。
于 2010-06-21T12:59:50.607 回答