Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在以前版本的Mac OS上运行PyObjC应用程序(内置Xcode)?_Python_Xcode_Macos_Pyobjc - Fatal编程技术网

Python 在以前版本的Mac OS上运行PyObjC应用程序(内置Xcode)?

Python 在以前版本的Mac OS上运行PyObjC应用程序(内置Xcode)?,python,xcode,macos,pyobjc,Python,Xcode,Macos,Pyobjc,我正在使用Xcode构建一个PyObjC应用程序。该应用程序在构建机器(运行10.8)上运行良好,但在运行10.6的机器上启动时崩溃,因为它找不到Python 2.7安装。很公平——10.6上预装的Python是Python2.5。但我并不在乎我的应用程序使用哪一个Python版本,我只希望它使用它能找到的最新版本的Python 我怎样才能: A) 告诉我的应用程序使用主机系统上可用的最新版本的Python,或 B) 将整个Python源代码捆绑到我的应用程序中 我对这个问题感到非常沮丧,任何帮

我正在使用Xcode构建一个PyObjC应用程序。该应用程序在构建机器(运行10.8)上运行良好,但在运行10.6的机器上启动时崩溃,因为它找不到Python 2.7安装。很公平——10.6上预装的Python是Python2.5。但我并不在乎我的应用程序使用哪一个Python版本,我只希望它使用它能找到的最新版本的Python

我怎样才能:

A) 告诉我的应用程序使用主机系统上可用的最新版本的Python,或

B) 将整个Python源代码捆绑到我的应用程序中


我对这个问题感到非常沮丧,任何帮助都将不胜感激

好问题。几年前,我曾为一个嵌入问题绞尽脑汁,最终动态链接到一个特定的版本,我知道这个版本在每个平台上都可用

我原本以为
Python.framework
当前的
就足够了,但它似乎在链接时通过Xcode得到解决,因此使链接特定于特定的版本。出于我的目的,我可以直接链接到

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/Python
它适用于OSX10.7和10.8。如果您需要返回到10.6,您需要尝试链接到

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Python.framework/Versions/2.5/Python
显然,如果您是针对10.6SDK进行编译,您会希望使用它,但关键是要确保链接到库的特定版本,而不是框架版本本身。您应该能够通过与库链接二进制文件中的+按钮手动导航到特定版本,但如果出现问题,您可以在Finder中直接从SDK打开Python.framework,并将特定于版本的库拖动到带有库的链接二进制文件组中


如果您找到了解决方法,请在此处发布另一个答案,但这对我将链接嵌入我的应用程序非常有效。

使用py2app创建应用程序包,并使用单独的Python安装(即不要使用/System/Library/Framework/Python.Framework)。在编译您使用的python安装时,应将MACOSX_部署_目标设置为您希望支持的最低OSX版本

当您这样做时,应该可以部署到较旧的OSX版本。我经常这样做是为了在10.8机器上构建应用程序,并将其部署到10.5机器上

在包含其他库时,尤其是包含配置脚本的库时,您确实需要注意:有时配置脚本会检测到在生成计算机上可用的功能,但在部署计算机上不可用


顺便说一句,您需要针对运行时使用的相同版本的Python进行链接。CPython的ABI在功能版本之间不兼容(即,2.6 ABI不一定与2.7 ABI兼容)。对于Python3.x,有一个稳定的ABI,它在功能版本之间兼容,但AFAIK主要针对python扩展,我不知道这对于在应用程序中嵌入python有多有用。

谢谢您的帮助!这可能是一个愚蠢的问题,但是我如何通过linkbinary with Libraries面板导航到Python框架呢?我通常会右键单击Xcode.app并“显示软件包内容”,但选择对话框似乎不允许我这样做。编辑:使用解决方法找到它——在Finder中导航到它,并将其添加到我的Finder侧栏,以便我可以在Xcode中单击它。