2020年3月26日 星期四

pythonnet 經過 cythonize 之後會出現 ModuleNotFoundError 錯誤

原先的標準寫法如下

import clr
clr.AddReference('MyDLL')
from MyDLL import MyClass
my_obj = MyClass()

但是因為 pythonnet 會去覆寫 __import__ 函式,而 cython 又有自己的一套方式來處理 __import__ 函式,因而導致程式在 cythonize 之後會出現 ModuleNotFoundError 的錯誤

如果要建立 MyClass 的 instance 的話還是可以使用 .net 的 CreateInstance 方法

import clr
asm = clr.AddReference("MyDLL")
my_obj = asm.CreateInstance('MyDLL.MyClass')

沒有留言:

張貼留言