2013-06-21 160 views
2

对不起,如果这是一个愚蠢的问题,但我一直在寻找答案,但我找不到一个答案。我正在使用PySide在Mac OS X上使用Cython创建一个gui应用程序。由于速度问题,我选择使用Cython。我想有一个小问题会是,我是否在无所事事上做文章,我甚至需要担心速度问题?发布在Mac OS X上用Cython写的GUI应用程序

我听说Cython编译器创建了.c文件。但是,我不能将这些作为我的申请(显然)分发。我想分发它作为一个应用程序包(.app),而不仅仅是一个可执行文件。

我曾尝试使用编译Xcode的C代码,但它创造了Unix的可执行文件,它在运行时,打开一个终端窗口,这是不能接受的,看到我的应用程序有它自己的GUI。

我也查看了关于bundle的Apple文档,如果需要的话我可以手动创建一个,但我更喜欢由xcode(或其他某个程序)创建的包,所以涉及的问题更少。

编辑:
我不会从用Cython得到充分速度受益,但我相信我会得到大部分。它会将我的Cython代码编译为python包(格式为.so格式),然后从py2app打包的python应用程序中访问它,它所做的只是导入库并启动gui?这只是我想到的一种解决方法,所以请随时告诉我它是否愚蠢。

回答

1

将它的工作编译我用Cython代码到Python包(在 的.so格式),然后从 py2app打包Python应用程序,这是所有它确实是进口图书馆访问,并启动GUI?

这就是Cython所做的。它首先生成优化的.c.h文件,然后将它们编译为Python包作为共享对象.so文件。所以答案应该是。实际上,编译之后,.so独立于生成的源文件,并且应该可供任何嵌入Python解释器的第三方应用程序动态加载。 Py2app应该可以。至少我想是这样......

其余的,我对Xcode不太了解。

编辑:可能会看看--use-pythonpath和/或--frameworks py2app的选项。

+0

那仍​​然会有很好的速度奖励吧?我认为它会,因为python解释器必须读更少的python代码。 – KFox

+1

你拥有的C代码越多,它的速度就越快。阅读Cython的基本知识:第一个众所周知的改进是,通过显式输入 - “cdef keyword”可以节省很多。例如,在[for loops]中递增时(http://technicaldiscovery.blogspot.fr/2011/06/speeding-up-python-numpy-cython-and.html)。除了[this](http://docs.cython.org/src/userguide/early_binding_for_speed.html),[this](http://docs.cython.org/src/tutorial/profiling_tutorial.html),还[本](http://blog.perrygeo.net/2008/04/19/a-quick-cython-introduction/)。 –

相关问题