Компилируете рабочую сборку py2app для Leopard и Snow Leopard?

В настоящее время я заставляю свое приложение 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

Это приложение py2app, скомпилированное Snow Leopard. Кроме того, когда я компилирую на 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

Любая помощь будет оценена. Заранее спасибо.


person jopes    schedule 29.08.2009    source источник


Ответы (3)


Я сделал это недавно, и уловка заключалась в том, чтобы создать автономную версию для установки Leopard.

По умолчанию, если у вас не установлена ​​версия Python с открытым исходным кодом, py2app создает полуавтономное приложение, имеющее символические ссылки на файлы ОС.

Если вместо этого вы создаете автономную версию приложения, то интерпретатор и вспомогательные файлы будут встроены в ваше приложение и, следовательно, будут согласованы на всех машинах, на которых выполняется ваше приложение. Инструкции по созданию полностью автономного приложения доступны здесь, но обратите внимание на комментарии в блоге, поскольку некоторые вещи изменились после сообщение в блоге было написано.

Если у вас есть определенные библиотеки, которые вам нужны, вы можете ссылаться на них в файле setup.py или, в качестве альтернативы, вы всегда можете добавить их вручную в каталог dylib (что было проще для меня, так как мне нужно было изменить сценарии запуска и я не хотел регенерировать), но убедитесь, что вы используете 32-битные библиотеки (которые будут на Leopard).

person sthartle    schedule 11.01.2010

Поскольку оба имеют разную архитектуру (соответственно 32 бита и 64 бита), я думаю, вам нужно создать 2 разных компиляции.

person Natim    schedule 09.10.2009