如何在Mac OS X上"弱链接"到Python框架?

1 投票
1 回答
586 浏览
提问于 2025-04-16 22:31

我正在尝试创建一个应用程序,希望它能链接到Mac OS X自带的Python框架,并且能够在Mac OS X 10.5、10.6和10.7上运行。

  1. 如果我尝试直接链接这个框架(默认方式),在Leopard系统上会出现问题,提示找不到10.7。
  2. 如果我尝试使用弱链接这个框架(在编译选项中使用-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;
}

这个程序在Mac OS X Lion上可以正常运行,但在Mac OS X Leopard上会崩溃。它出现了“异常退出:总线错误”的问题,伴随有EXC_BAD_ACCESS (SIGBUS)异常(因为它引用了地址0)。

有没有什么办法可以解决这个问题?

这里有一个测试程序的压缩文件:

http://slurf.net/files/TheWeakestLink.zip

1 个回答

2

我不太确定你想要做什么,但我可以给你一些建议。在这三个操作系统版本中,唯一一个常见的Python版本是Python 2.5,所以你可能可以明确选择这个版本。不过,更好的办法可能是把你自己的Python框架打包进你的应用里。如果你小心一点,可以使用python.org提供的32位安装包,虽然如果你需要在10.7上为你的应用构建C扩展模块,使用专门为10.5及以上版本制作的安装包可能更好。py2app可以创建一个独立的Python应用,它会把一个非系统的Python框架打包在一起,不需要使用Objective C的前端。也许你可以用它来满足你的需求。

撰写回答