如何";“薄弱环节”;到MacOSX上的Python框架?

如何";“薄弱环节”;到MacOSX上的Python框架?,python,xcode,macos,pyobjc,Python,Xcode,Macos,Pyobjc,我正在尝试创建一个可以链接到MacOSX内置Python框架的应用程序,并让它在MacOSX10.5、10.6和10.7上运行 如果我试图硬链接到框架(默认),Leopard会抱怨说他找不到10.7 如果我尝试弱链接框架(在编译器标志中使用-weak_framework Python) 在这两种情况下,Mac OS X部署目标都设置为10.5 我的main.m如下所示: #import <Python/Python.h> #import <Cocoa/Cocoa.h>

我正在尝试创建一个可以链接到MacOSX内置Python框架的应用程序,并让它在MacOSX10.5、10.6和10.7上运行

  • 如果我试图硬链接到框架(默认),Leopard会抱怨说他找不到10.7
  • 如果我尝试弱链接框架(在编译器标志中使用-weak_framework Python)
  • 在这两种情况下,Mac OS X部署目标都设置为10.5

    我的main.m如下所示:

    #import <Python/Python.h>
    #import <Cocoa/Cocoa.h>
    
    int main(int argc, char *argv[])
    {
        Py_SetProgramName("/usr/bin/python");
        Py_Initialize();
        PyRun_SimpleString("import os; os.system('say okay')");
        return 0;
    }
    
    #导入
    #进口
    int main(int argc,char*argv[])
    {
    Py_SetProgramName(“/usr/bin/python”);
    Py_初始化();
    PyRun_SimpleString(“导入操作系统;操作系统('say-ok')”);
    返回0;
    }
    
    此程序在Mac OS X Lion上运行,但在Mac OS X Leopard上崩溃。它给出一个带有EXC_BAD_ACCESS(SIGBUS)异常的“异常退出:总线错误”(因为它引用地址0)

    有没有办法去

    此处提供了测试程序的zip文件:


    我不确定您在这里想做什么,但这里有一些建议。在这三个操作系统版本中,系统Python框架共有的唯一Python版本是Python2.5,因此您可以明确地针对该版本。但是,更有可能的是,您最好在应用程序中打包自己的Python框架。如果您小心的话,您可以使用其中一个用于此目的,尽管最好使用专门为10.5+构建的,尤其是当您需要为10.7上的应用构建C扩展模块时。可以通过捆绑非系统Python框架创建独立的Python应用程序,而无需使用Objective C前端。也许你可以把它用于你的目的

    我已经成功地链接到2.5(因为它在任何地方都可用)。我想链接到Python的“通用”版本,它在运行时将解析为系统上可用的最新版本的Python。这可能吗?在每个Python框架中,
    Versions
    目录中都有一个
    Current
    symlink。但是如果您是指对象代码链接意义上的
    链接
    ,请记住Python项目不能保证版本之间的C级ABI兼容性。如果您只想调用最新的Python解释器,那么您可能只需要使用
    /usr/bin/Python
    中的链接之类的东西。据我所知,大多数使用Python的第三方应用程序都在应用程序中提供自己的Python副本(使用
    py2app
    或同等版本)。否则就太复杂了。