Py2app с родным Python 2.6

У меня есть приложение Python, в основном зависящее от matplotlib, tkinter, numpy и scipy, которые я распространяю для нескольких операционных систем. Я создаю их поверх версии python 2.6 для python.org. Для Mac в прошлом у меня был хороший успех с py2app и pyinstaller для создания автономных версий моего приложения. Однако недавно я включил функции, для которых требуются patsy, pandas и igraph, и мне пришлось перейти на версию python 2.6, распределенную для Mac, чтобы заставить igraph работать. Все отлично работает при создании версии моего программного обеспечения py2app на Mac для моей ОС (10.6), но когда я запускаю 10.8, я столкнулся со следующей ошибкой:

Traceback (most recent call last):
 File "UI.pyc", line 603 createHeatMap
 File "clustering.pyc", line 31, in <module>
 File "mpl_toolkits/__init__.pyc", line 2, in <module>
 File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 698, in <module>
 File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 701, in Environment
 File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 96, in get_supported_platform
 File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 222, in get_build_platform
 File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/util.py", line 98, in get_platform
 File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/sysconfig.py", line 537, in get_config_vars
 File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/sysconfig.py", line 405, in _init_posix
DistutilsPlatformError: invalid Python installation: unable to open /user/include/python2.6/pyconfig.h (No such file or directory)

Это устраняется путем сохранения файла pyconfig.h в указанном месте на целевом компьютере (отсутствует в 10.8, но присутствует в 10.6), что позволяет моему приложению нормально работать. В моем каталоге py2app pacakge в разделе «Содержание/Ресурсы» есть символическая ссылка на каталог «include», который указывает на: /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/pyconfig .час. Если я включу файл pyconfig.h в качестве дополнительного ресурса в мой установочный файл py2app, он также включит его в пакет, но все равно не распознает.

Может ли кто-нибудь предложить хороший обходной путь для этого, который не требует от меня использования версии python python.org (мне ужасно повезло заставить igraph работать с этим).

Спасибо...


person nateS    schedule 03.04.2013    source источник
comment
Неидеальный обходной путь для меня заключался в том, чтобы установить версию python 2.6 на python.org в /usr/local/bin/python2.6 (опция: ./configure --enable-shared), а затем связать все из каталогов пакетов сайта и инструментов установки в ранее установленные собственные каталоги OSX python 2.6 python. Таким образом, я могу продолжать использовать нативную версию Mac Python для повседневного использования и установки библиотек, но выполнять сборки py2app специально с версией python.org. Это устраняет проблему с установкой igraph и создает бинарное приложение py2app, которое работает на OSX 10.6 и 10.8.   -  person nateS    schedule 06.04.2013


Ответы (1)


Это известная проблема в py2app, см. https://bitbucket.org/ronaldoussoren/py2app/issue/36/py2app-fails-to-build-a-working-executable. Файл pyconfig.h присутствует только на машинах, на которых установлены инструменты разработчика, поэтому я сам не заметил проблемы.

Вероятно, самый простой обходной путь — заменить символическую ссылку pyconfig.h копией файла после создания пакета приложения.

person Ronald Oussoren    schedule 11.04.2013