如何为Leopard和Snow Leopard编译py2app可用构建?

6 投票
3 回答
2079 浏览
提问于 2025-04-15 13:57

我现在正在让我的PyObjC应用程序在Snow Leopard上运行,并且我成功编译了一个独立的应用程序。我的问题是,如何让这个构建也能兼容Leopard,因为出现了这些错误?

dyld: lazy symbol binding failed: Symbol not found: _fopen$UNIX2003
  Referenced from: /Applications/MyApp.app/Contents/MacOS/MyApp
  Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: _fopen$UNIX2003
  Referenced from: /Applications/MyApp.app/Contents/MacOS/MyApp
  Expected in: /usr/lib/libSystem.B.dylib

这是一个在Snow Leopard上编译的py2app应用程序。另外,当我在Leopard上编译时,又出现了这个错误:

Traceback (most recent call last):
  File "/Users/jofell/client/dist/MyApp.app/Contents/Resources/__boot__.py", line 31, in <module>
    _run('main.py')
  File "/Users/jofell/client/dist/MyApp.app/Contents/Resources/__boot__.py", line 28, in _run
    execfile(path, globals(), globals())
  File "/Users/jofell/client/dist/MyApp.app/Contents/Resources/main.py", line 17, in <module>
    from AppKit import *
  File "AppKit/__init__.pyc", line 10, in <module>
  File "Foundation/__init__.pyc", line 10, in <module>
  File "CoreFoundation/__init__.pyc", line 17, in <module>
  File "objc/_bridgesupport.pyc", line 129, in initFrameworkWrapper
  File "objc/_bridgesupport.pyc", line 53, in _parseBridgeSupport
ValueError: Unknown typestr
2009-08-29 19:30:14.530 MyApp[445:903] MyApp Error
2009-08-29 19:30:14.534 MyApp[445:903] MyApp Error
An unexpected error has occurred during execution of the main script

任何帮助都非常感谢。提前谢谢你们。

3 个回答

0

因为这两种架构分别是32位和64位,所以我觉得你需要做两个不同的编译。

3

我最近做过这个,诀窍是在Leopard系统上构建一个独立版本。

默认情况下,除非你安装了开源版本的Python,否则py2app会创建一个半独立的应用程序,这种应用程序会链接到操作系统的文件。

如果你创建一个独立版本的应用程序,那么解释器和支持文件就会嵌入到你的应用程序中,这样在运行你应用程序的所有机器上都是一致的。关于如何创建一个完全独立的应用程序的说明可以在这里找到,但要注意博客的评论,因为一些内容在博客发布后发生了变化。

如果你有特定的库需要使用,可以在setup.py文件中引用它们,或者你也可以手动将它们添加到dylib目录(对我来说这样更简单,因为我需要更改启动脚本,不想重新生成),但一定要确保使用32位的库(在Leopard上就是这样)。

撰写回答