2011-11-28 4 views
5

私はちょうどCythonをピックアップしています。私は私のPythonプロジェクトでコアライブラリを構築するためにそれを使用しています。現在、私はdistutilssetup.pyファイルを設定したと私はCythonファイル再コンパイルしたいときは、次のコマンドを実行しています:cydeファイルを自動的にコンパイルするようにpydevを設定できますか?

python ./setup.py build_ext --inplace 

をしかし、私は頻繁に忘れます。私は編集/保存するたびに、EclipseがJavaのクラスファイルを自動的にビルドする方法が好きです。 PyDev、Eclipse、またはその他の巧妙な方法で同様の動作を設定することは可能ですか?その後、

右クリックプロジェクト>プロパティ>ビルダー>新しい>プログラム:今、彼らは変化したときに自動的にcythonファイルをコンパイルするPyDevはで特別なサポートはありません...あなたがしたい場合は、外部のビルダーを作成することができますについては

答えて

5

$ {build_files}変数も引数として受け取り、受け取るモジュールをパラメータとして持つpythonとしてプログラムを構成します。

変更されたファイルが.pyxファイルであるかどうかを確認し、そうであればそのファイルの実際のビルドコマンドを呼び出してください。

+0

http://pydev.blogspot.com/2011/10/pydev-cython.htmlでもサイモンのサポートがあります – fabrizioM

1

あなたはそれが(例えば、あなたのmingwの場所、窓の下、など)いくつかのインストールの詳細を必要とする場合でも、ここでは一例であり、pyximportを呼び出して、あなたのベースPYTHONPATHに「魔法」sitecustomize.pyを使用してコンパイルするcython自動的に取得することができます。

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 

ウィンドウの下にいる場合、mingwを使用するにはcythonがslightly modifiedである必要があることに注意してください。

また、ファイル* .pyxを呼び出すと、この機能が有効になります。もう一つのアドバイス:Cythonの "pure python" syntaxを使って、Pydevエディタが不平を言うことはありません。

関連する問題