我总是可以在终端中编译和运行,但我想知道是否有办法在PyCharm中执行此操作。在链接中它说:"编译是使用外部工具完成的。首选构建系统(Makefile,setup.py等)应配置为外部工具。"我想知道如何进行这种配置。使用Cython的PyCharm中的一个小型Hello World示例将非常受欢迎。
由于
答案 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
有两种方法可以编译和运行
使用设置文件。制作文件 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)
更容易的方法是使用 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)