在 Cocoa 应用程序的一部分中使用 python - 如何将 .py 与应用程序打包?

发布于 2024-10-29 10:47:45 字数 413 浏览 4 评论 0原文

我正在编写一个 Cocoa 应用程序,它使用 Python 来执行一些计算和数据操作。我有一个 Objective-C 类,用于通过 Python API 运行 Python 脚本。我目前可以使用 API 并链接到 Python.framework 来毫无问题地调用 Python。

我现在正在研究如何将代码打包在一起。我的理解是,python 代码将作为 .app 包的一部分包含在内,可能位于 Resources 文件夹中。我在很多地方都遇到过 py2app 的讨论,但似乎只有当你的应用程序完全用 Python 编写时才使用它;我不认为这能解决我的问题。如何将代码正确打包到我的应用程序中?我可以发送 .pyc 而不是 .py 文件吗?

I'm writing a Cocoa application that uses Python to perform some calculations and data manipulation. I've got an Objective-C class that I'm using to run the Python scripts via the Python API. I can currently call Python with no problem using the API and linking to Python.framework.

I'm looking at how to package the code together now. My understanding is that the python code would be included as part of the .app bundle, possibly in the Resources folder. I've run into py2app being discussed many places, but it appears to be only used if your app is written wholly in Python; I don't think this is the solution to my problem. How do I properly package the code with my app? Can I send the .pyc instead of the .py file?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温柔戏命师 2024-11-05 10:47:45

您可以使用 py2app 编译一个可以在运行时加载的 NSBundle (您可以将此可加载包添加到应用程序包的 PlugIns/ 文件夹中)。然而,虽然最初很容易开始工作,但 PyObjC 或 py2app 中似乎存在一个错误,会导致严重的内存泄漏,具体取决于插件的 API(请参阅 http://sourceforge.net/tracker/?func=detail&aid=1982104&group_id=14534&atid=114534< /a>)。

更困难但更安全的方法是链接到 Python.framework。然后,您可以将 .py 文件保存在应用程序包的 Resources/ 目录中,并通过标准 CPython 嵌入 API 加载它们。

不要仅包含 .pyc 文件。 pyc 格式是一个实现细节,您不应在未来的 Python 版本中依赖它。

You can use py2app to compile an NSBundle which can be loaded at runtime (you could add this loadable bundle to your app bundle's PlugIns/ folder). However, while initially quite easy to get working, there appears to be a bug in PyObjC or py2app that leads to significant memory leaks depending on the API of your plugin (see http://sourceforge.net/tracker/?func=detail&aid=1982104&group_id=14534&atid=114534).

The harder but safer approach is to link against the Python.framework. You can then keep your .py files in the app bundle's Resources/ directory and load them via the standard CPython embedding API.

Don't include only the .pyc files. The pyc format is an implementation detail that you shouldn't rely upon for future Python versions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文