数学モデルのより高速なコードを生成するためにcythonを使用しています。コードのコンパイルに苦労していますが、.batを使用してなんとかしてコンパイルできました。
setlocal EnableDelayedExpansion
CALL "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\SetEnv.cmd" /x64 /release
set DISTUTILS_USE_SDK=1
C:\Python27\python.exe C:\gcsilve\trunk\myproject\myproject\cythonsetup.py build_ext --inplace
PAUSE
それは大丈夫です...
私の質問はpyximportに関するものです。 pyximport.install()を使用する他の誰かが書いた古いコードがあります。私はすでに自分でコードをコンパイルしているので、それが何をするのか、なぜそれを使用する必要があるのか理解できませんでした。それで、誰かがpyximportが何をするのかを非常に単純な方法で(ダミーのために)説明してくれますか?
追加情報:私はcythonを使用するproject1を持っています。私はproject1を参照するproject2を持っています。
pyximportはCythonの一部であり、import
の代わりに使用されます。
モジュールに追加のCライブラリや特別なビルドセットアップが必要ない場合は、pyximportモジュールを使用して、setup.pyファイルを作成しなくても、インポート時に.pyxファイルを直接ロードできます。次のように使用できます。
>>> import pyximport; pyximport.install()
>>> import helloworld
Hello World
pyximport
を使用すると、_.pyx
_モジュールを自動的に再コンパイルして再ロードできます。
_setup.py
_が生成したものを削除します。そうしないと、その拡張モジュールをロードする可能性があります。 pyximport
は_setup.py
_を使用しません。
_hello.pyx
_関数を持つ_mean2
_を想定しましょう。
IPythonを起動します。
In [1]: import pyximport In [2]: pyximport.install(reload_support=True) In [3]: from importlib import reload In [4]: import hello In [5]: hello.mean2(2,3)
結果:
_Out [5]: 2.5
_
そのウィンドウを終了し、エディターに移動して_hello.pyx
_を変更します。
次に、IPythonに戻り、次のように入力します。
In [6]: reload(hello);import hello;hello.mean2(2,3)
再コンパイルについて通知するテキストが表示されます。その後、新しい結果:
_Out[6]: 'Mean of 2 and 3 is 2.5'
_