如何在我的setup.py文件中使用Cython进行外部模块编译?

时间:2014-02-16 08:54:54

标签: python compilation installation cython setup.py

首先,如果我的项目都是python(没有C ++或C)文件,那么使用Cython有什么好处,比如直接使用python库(用于集成在大型C ++软件程序中)?

其次,要将.pyx文件编译为Cython,我打算将setup.py文件与此代码一起使用:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize(MyString)
)

MyString应该是什么?没有扩展名的python(.pyx)文件的名称?它应该包括完整的路径吗?应该在哪里找到setup.py文件,以便对文件进行cython化?如果不是这样,如何正确Cythonize文件?

  • 在处理仅包含.py文件的库时,使用Cython的正确方法是什么?

  • 如何使用setup.py进行cythonize(请参阅上面提到的更详细的问题)?

2 个答案:

答案 0 :(得分:1)

嗯,这里有很多问题。

  1. 使用Cython有什么好处,比如直接使用python库?

    如果你只使用Python库(例如:用于网络内容),使用Cython不应该有很大的帮助。如果出现以下情况,Cython将极大地帮助您:

    • 您需要访问外部C / C ++库;
    • 或者您需要使用C / C ++分配来构建自己的快速数据结构;
    • 或者你有一个密集的数字运算应用程序。
  2. MyString应该是什么?

    这里有很多选择。我通常使用

    setup(
        cmdclass = {'build_ext': build_ext},
        ext_modules = [Extension("myext", ["myext.pyx", "myextlib.pyx"])])
    

    您可以在Cython compilation documentation找到大量信息 对于小型库,您可以将其放在与源相同的目录中。

答案 1 :(得分:0)

可能会更快地为您带来更好的效果。