如何在Mac OS X上"弱链接"到Python框架?
我正在尝试创建一个应用程序,希望它能链接到Mac OS X自带的Python框架,并且能够在Mac OS X 10.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;
}
这个程序在Mac OS X Lion上可以正常运行,但在Mac OS X Leopard上会崩溃。它出现了“异常退出:总线错误”的问题,伴随有EXC_BAD_ACCESS (SIGBUS)异常(因为它引用了地址0)。
有没有什么办法可以解决这个问题?
这里有一个测试程序的压缩文件:
1 个回答
2
我不太确定你想要做什么,但我可以给你一些建议。在这三个操作系统版本中,唯一一个常见的Python版本是Python 2.5,所以你可能可以明确选择这个版本。不过,更好的办法可能是把你自己的Python框架打包进你的应用里。如果你小心一点,可以使用python.org提供的32位安装包,虽然如果你需要在10.7上为你的应用构建C扩展模块,使用专门为10.5及以上版本制作的安装包可能更好。py2app可以创建一个独立的Python应用,它会把一个非系统的Python框架打包在一起,不需要使用Objective C的前端。也许你可以用它来满足你的需求。