Py2app与本机Python 2.6

Py2app与本机Python 2.6,python,macos,matplotlib,igraph,py2app,Python,Macos,Matplotlib,Igraph,Py2app,我有一个主要依赖于matplotlib、tkinter、numpy和scipy的python应用程序,我一直在为多个操作系统分发这些应用程序。我在python.org版的python2.6上构建了这些。对于mac,我在过去使用py2app和pyinstaller构建我的应用程序的独立版本时取得了很好的成功。然而,最近我加入了需要patsy、pandas和igraph的函数,为了让igraph正常工作,我不得不迁移到python 2.6的mac分布式版本。在Mac上为我的操作系统(10.6)构建我

我有一个主要依赖于matplotlib、tkinter、numpy和scipy的python应用程序,我一直在为多个操作系统分发这些应用程序。我在python.org版的python2.6上构建了这些。对于mac,我在过去使用py2app和pyinstaller构建我的应用程序的独立版本时取得了很好的成功。然而,最近我加入了需要patsy、pandas和igraph的函数,为了让igraph正常工作,我不得不迁移到python 2.6的mac分布式版本。在Mac上为我的操作系统(10.6)构建我的软件的py2app版本时,所有这些都可以正常工作,但在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)
回溯(最近一次呼叫最后一次):
文件“UI.pyc”,第603行createHeatMap
文件“clustering.pyc”,第31行,在
文件“mpl_toolkits/_init__uu.pyc”,第2行,在
文件“/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/Python/pkg_resources.py”,第698行,在
环境中的文件“/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/Python/pkg_resources.py”,第701行
文件“/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/Python/pkg_resources.py”,第96行,在get_支持的_平台中
文件“/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/Python/pkg_resources.py”,第222行,在get_build_平台中
get_平台中的文件“/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/util.py”,第98行
文件“/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/sysconfig.py”,第537行,在get\u config\u vars中
文件“/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/sysconfig.py”,第405行,在_init_posix中
DistutilsPlatformError:无效的Python安装:无法打开/user/include/python2.6/pyconfig.h(没有这样的文件或目录)
通过将文件pyconfig.h保存到目标计算机上的指定位置(10.8中没有,但10.6中有),可以修复此问题,从而使我的应用程序能够正常工作。在我的py2app pacakge目录中,在“Contents/Resources”下有一个指向目录“include”的sym链接,指向:/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/pyconfig.h。如果我将pyconfig.h文件作为附加资源包含在py2app安装文件中,它也会包含在包中,但仍然无法识别

有谁能推荐一个不需要我使用python.org版本的python的好方法来解决这个问题吗(我很幸运地让igraph来处理这个问题)


谢谢…

这是py2app中的一个已知问题,请参阅。pyconfig.h文件只存在于安装了开发人员工具的机器上,这就是为什么我自己没有注意到这个问题


最简单的解决办法可能是在创建应用程序包后用文件的副本替换pyconfig.h符号链接。

一个不理想的解决办法是在/usr/local/bin/python2.6下安装python.org版本的python2.6(选项:./configure--enable shared),然后sym将所有站点包和安装工具目录链接到以前安装的OSX原生python 2.6 python目录。通过这种方式,我可以继续在日常使用和库安装中使用Mac Python的本机版本,但具体使用Python.org版本执行py2app构建。这消除了igraph安装的问题,并构建了一个在OSX 10.6和10.8上工作的py2app二进制应用程序。