如何“弱链接” 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)。
有没有办法
在这里提供测试程序的 zip 文件:
I'm trying to create an app that can link to Mac OS X's built-in Python framework and have it work on Mac OS X 10.5, 10.6 and 10.7.
- If I try to hard-link to the framework (the default), Leopard complains that he can't find 10.7.
- If I try to weakly link the framework (using -weak_framework Python in the compiler flags),
In both cases, the Mac OS X deployment target is set to 10.5.
My main.m looks like this:
#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;
}
This program works on Mac OS X Lion but crashes on Mac OS X Leopard. It gives a "Exited abnormally: Bus error" with a EXC_BAD_ACCESS (SIGBUS) exception (because it refers to address 0).
Is there any way to
A zip file of a test program is available here:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不确定你想在这里做什么,但这里有一些建议。这三个操作系统版本中的系统 Python 框架唯一通用的 Python 版本是 Python 2.5,因此您也许能够明确定位该版本。但是,更有可能的是,您最好将自己的 Python 框架打包到您的应用程序中。如果您小心的话,您可以使用 python.org 仅 32 位安装程序 之一来实现此目的,尽管它使用专门为 10.5+ 构建的模块可能会更好,特别是如果您需要为 10.7 上的应用程序构建 C 扩展模块。 py2app 可以通过捆绑非系统的Python框架来创建一个独立的Python应用程序,无需任何依赖需要 Objective C 前端。也许您可以将它用于您的目的。
I'm not sure what you are trying to do here but here are a few suggestions. The only Python version common to the system Python frameworks in those three operating system releases is Python 2.5 so you may be able to explicitly target that version. But, more likely, you would be better off packaging your own Python framework within your app. If you are careful, you could use one of the python.org 32-bit only installers for this purpose although it might be better to use one specifically built for 10.5+ especially if you need to build C extension modules for your app on 10.7. py2app can create a standalone Python app, by bundling up a non-system Python frameworks, with no need for an Objective C front-end. Perhaps you can use it for your purposes.