2016-09-23 9 views
0

私はpyxファイルを動的に作成しましたが、cythonizeにエンコードされた関数を使用するのに苦労しています。動的pyx関数をcythonize

私は

import pyximport 
pyximport.install() 
import imp 
module = imp.load_source('module.name', pyxfilename) 

を試してみましたが、これは動作するようには思えません。どのように私はこれを行うことができます考え?

+0

エラーを示していますか?また、 'pyximport'は余分なCライブラリがなく、特別なビルが必要ない場合にのみ動作します。 – Arnial

+0

これは 'pyx'コードが有効なPythonコードではないことを示しています... – orange

答えて

3

imp.load_sourcehttps://github.com/cython/cython/blob/151d653d3c7ab07e9d961c9601b2ff45202e6ce2/pyximport/pyximport.py#L207)の代わりにpyximport.load_moduleという関数を使用できます。

これは必要に応じて作成されたように見えますが、imp.load_dynamicを呼び出してください。 load_sourceと同じ方法で呼び出します。

module = pyximport.load_module('module.name', pyxfilename) 
+0

私はこれを現在簡単にテストすることはできませんので、少し推測ですが、合理的に自信があります。それが動作しない場合は、事前にお詫び申し上げます。 – DavidW

+0

優秀!これはトリックでした。問題は、 'module.name'(特に名前の部分)はpyxファイルごとに異なるはずです。そうでなければ、同じ生成されたファイルが使用されます。 'pyximport.install()'も呼び出さなければなりません。 – orange