【发布时间】:2016-08-21 04:35:21
【问题描述】:
我总是可以在终端中编译和运行,但我想知道在 PyCharm 中是否有办法做到这一点。在链接中它说:“编译是使用外部工具完成的。首选的构建系统(Makefile、setup.py 等)应该配置为外部工具。”我想知道如何进行此配置。非常感谢 PyCharm 中使用 Cython 的 Hello World 小示例。
谢谢
【问题讨论】:
我总是可以在终端中编译和运行,但我想知道在 PyCharm 中是否有办法做到这一点。在链接中它说:“编译是使用外部工具完成的。首选的构建系统(Makefile、setup.py 等)应该配置为外部工具。”我想知道如何进行此配置。非常感谢 PyCharm 中使用 Cython 的 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 文件。要运行此文件,您必须转到 Tools --> Run setup.py Task。然后输入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)
【讨论】: