为Cython设置PyCharm

时间:2016-04-27 04:30:08

标签: pycharm cython

我看到PyCharm supports Cython

我总是可以在终端中编译和运行,但我想知道是否有办法在PyCharm中执行此操作。在链接中它说:"编译是使用外部工具完成的。首选构建系统(Makefile,setup.py等)应配置为外部工具。"我想知道如何进行这种配置。使用Cython的PyCharm中的一个小型Hello World示例将非常受欢迎。

由于

1 个答案:

答案 0 :(得分:13)

在这里回答我自己的问题:

假设我们有函数 fib.pyx

def fib(n):
"""Print the Fibonacci series up to n."""
a, b = 0, 1
while b < n:
    print b,
    a, b = b, a + b

有两种方法可以编译和运行

  1. 使用设置文件。制作文件 setup.py

    from distutils.core import setup
    from Cython.Build import cythonize
    
    ext_options = {"compiler_directives": {"profile": True}, "annotate": True}
    setup(
        ext_modules = cythonize("fib.pyx", **ext_options)
    )
    

    此处包含ext_options以生成带注释的html文件。要运行此文件,您必须转到工具 - &gt;运行setup.py任务。然后键入build_ext作为任务名称,并在提示命令行输入时键入--inplace。生成文件 fib.c fib.o 和可执行文件 fib.so 。还创建了注释文件 fib.html

    现在,以下代码可以在任何python文件中使用,例如 main.py

    import fib
    fib.fib(2000)
    
  2. 更容易的方法是使用 pyximport 。无需安装文件。请注意,只有在"your module doesn’t require any extra C libraries or a special build setup."文件 main.py 现在应该是这样的情况下才能使用此功能:

    import pyximport; pyximport.install()
    import fib
    fib.fib(2000)
    

    据我所知,即使 fib.c fib.o fib.so ,也会发生相同的代码编译。文件不会在项目文件夹中结束。也不会生成 fib.html 代码,但可以通过向主文件添加两行来修复此问题。使用新行 main.py 现在是:

    import pyximport; pyximport.install()
    import subprocess
    subprocess.call(["cython", "-a", "fib.pyx"])
    import fib
    fib.fib(2000)