我看到了PyCharm supports Cython

我总是可以在终端中编译和运行,但是我想知道PyCharm是否有办法做到这一点。在链接中说:“编译是使用外部工具完成的。首选的构建系统(Makefile,setup.py等)应配置为外部工具。”我想知道如何进行此配置。一个使用Cython的PyCharm中的Hello World小示例将不胜感激。

谢谢

最佳答案

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

假设我们有功能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


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


使用安装文件。制作文件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文件。要运行此文件,您必须转到工具->运行setup.py任务。然后键入build_ext作为任务名称,并在提示您输入命令行输入时键入--inplace。生成文件fib.c,fib.o和可执行文件fib.so。注释文件fib.html也已创建。

现在,以下代码应可在任何python文件中运行,例如main.py:

import fib
fib.fib(2000)

最简单的方法是使用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)

关于pycharm - 设置Cython的PyCharm,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36880336/

10-13 09:43