目前,我正在为Snow Leopard开发我的PyObjC应用程序,并成功编译了一个独立的应用程序。我的问题是,考虑到这些错误,如何使构建也与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

任何帮助,将不胜感激。提前致谢。

最佳答案

我最近已完成此操作,窍门是在安装上构建独立版本。

默认情况下,除非您安装了Python的开源版本,否则py2app会创建一个半独立应用程序,该应用程序具有指向OS文件的符号链接(symbolic link)。

相反,如果您创建应用程序的独立版本,则解释器和支持文件将嵌入在您的应用程序中,因此在运行该应用程序的所有计算机上都是一致的。 here提供了有关创建完全独立的应用程序的说明,但是请注意博客的注释,因为在撰写博客文章后某些事情确实发生了变化。

如果您需要特定的库,则可以在setup.py文件中引用它们,或者可以始终将它们手动添加到dylib目录中(这对我来说比较容易,因为我需要更改启动脚本,并且不想重新生成),但请确保使用32位库(它将在Leopard上使用)。

关于python - 为Leopard和Snow Leopard编译py2app工作版本吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1351209/

10-11 08:51