2016-09-23 53 views
0

我已經創建了一個pyx文件動態,但很難cythonize和使用它編碼的函數。Cythonize動態pyx函數

我試圖

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

但這似乎並沒有工作。任何想法我怎麼能做到這一點?

+0

是否顯示任何錯誤?另請注意,只有在不需要額外的C庫並且不需要特殊的建築時,'pyximport'才能工作。 – Arnial

+0

它顯示'pyx'代碼是不是有效的Python代碼... – orange

回答

3

您可以使用功能pyximport.load_module而不是imp.load_sourcehttps://github.com/cython/cython/blob/151d653d3c7ab07e9d961c9601b2ff45202e6ce2/pyximport/pyximport.py#L207)。

如果需要,看起來會生成,然後致電imp.load_dynamic。你可以用與load_source相同的方式稱呼它。

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

恐怕我目前不能輕易測試,所以這是一個猜測,但我相當有信心。如果它不起作用,提前道歉。 – DavidW

+0

優秀!這個伎倆。一個問題是,對於每個pyx文件,'module.name'(特別是名稱部分)應該是不同的,否則使用相同的生成文件。還應該調用'pyximport.install()'。 – orange