我可以配置pydev来自动编译cython文件吗?



我正在学习Cython。我用它在我的Python项目中构建一个核心库。目前,我已经用distutils配置了一个setup.py文件,每当我想重新编译Cython文件时,就运行以下命令:

python ./setup.py build_ext --inplace

然而,我经常忘记。我喜欢每次编辑/保存时Eclipse自动为Java构建类文件的方式。是否有可能为PyDev、Eclipse或其他聪明的方式配置类似的行为?

目前在PyDev中没有特殊的支持来自动编译cython文件,当他们改变…如果你愿意,你可以创建一个外部构建器:

右键单击project> properties> builders> new> program,然后将程序配置为python,将要运行的模块作为参数,并接收${build_files}变量作为参数。

您可能应该检查某些更改的文件是否是.pyx文件,如果是,则调用该文件的实际构建命令——可能还有依赖项。

您可以在调用pyximport的基本PYTHONPATH中使用"magic" sitecustomize.py来自动获得cython编译,即使它需要一些安装细节(例如,在windows下,您的mingw位置),下面是一个示例:

import pyximport
import os
import numpy
#import cython
import Cython.Compiler.Options as Options
Options.cimport_from_pyx = True
if os.name == 'nt':
    if os.environ.has_key('CPATH'):
        os.environ['CPATH'] = os.environ['CPATH'] + numpy.get_include()
    else:
        os.environ['CPATH'] = numpy.get_include()
    # XXX: we're assuming that MinGW is installed in C:MinGW (default)
    if os.environ.has_key('PATH'):
        os.environ['PATH'] = os.environ['PATH'] + ';C:MinGWbin'
    else:
        os.environ['PATH'] = 'C:MinGWbin'
    mingw_setup_args = { 'options': { 'build_ext': { 'compiler': 'mingw32' } } }
    pyximport.install(setup_args=mingw_setup_args)
elif os.name == 'posix':
    if os.environ.has_key('CFLAGS'):
        os.environ['CFLAGS'] = os.environ['CFLAGS'] + ' -I' + numpy.get_include()
    else:
        os.environ['CFLAGS'] = ' -I' + numpy.get_include()
    pyximport.install()
pyximport.DEBUG_IMPORT = True

作为一个旁注,如果你在windows下,请记住你的cython必须稍微修改一下才能使用mingw。

你也应该称你的文件为*。Pyx使其工作。另一个建议:你应该使用cython "pure python"语法,这样Pydev编辑器就不会报错。

最新更新