我只是选择了Cython。我正在使用它在我的Python项目中构建一个核心库。目前我已经使用setup.py
配置了distutils
文件,并且每当我想重新编译Cython文件时,我都会运行以下命令:
python ./setup.py build_ext --inplace
然而,我经常忘记。我喜欢Eclipse每次编辑/保存时如何自动为Java构建类文件。是否可以为PyDev,Eclipse或其他一些聪明的方法配置类似的行为?
答案 0 :(得分:5)
目前在PyDev中没有特别支持在他们改变时自动编译cython文件...如果你想要你可以创建一个外部构建器:
右键单击项目>属性>建设者>新>程序,然后将程序配置为python,作为参数运行和接收作为参数的模块$ {build_files}变量。
您应该检查一些更改的文件是否是.pyx文件,如果是,请调用该文件的实际构建命令 - 也许是依赖项。
答案 1 :(得分:1)
你可以使用调用sitecustomize.py的基础PYTHONPATH中的“魔法”pyximport自动获取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:\MinGW\bin'
else:
os.environ['PATH'] = 'C:\MinGW\bin'
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必须slightly modified才能使用mingw。
你也应该调用你的文件* .pyx来实现这个目的。另一个建议是:你应该使用cython“pure python”syntax,以便Pydev编辑器不会抱怨。