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 в разделе "Contents/Resources" есть символическая ссылка на каталог "include", которая указывает на: /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/pyconfig.час. Если я включу файл pyconfig.h в качестве дополнительного ресурса в установочный файл py2app, он также включит его в пакет, но он все равно не будет распознан.
Может кто-нибудь предложить хорошую работу для этого, которая не требует от меня использования python.org версии python (мне очень повезло, когда я получил igraph для работы с этим).
Спасибо...
1 ответ
Это известная проблема в py2app, см. https://bitbucket.org/ronaldoussoren/py2app/issue/36/py2app-fails-to-build-a-working-executable. Файл pyconfig.h присутствует только на машинах, на которых установлены инструменты разработчика, поэтому я сам не заметил этой проблемы.
Возможно, самый простой обходной путь - заменить символическую ссылку pyconfig.h на копию файла после создания пакета приложения.