使用Python.net访问含多类实例的C#类时遇‘模块未找到’问题
问题描述
我正尝试通过Python.net访问一个包含多个TestObject实例的C#类,相关代码如下:
Python代码
import clr import sys sys.append({path}) clr.AddReference({project}) from TestProject import TestClass
但只要该C#类中包含多个类实例,程序就会报错*‘Module not found’*,尽管这个类编译完全正常。
C#代码
public class TestClass { public TestObject test1; public TestObject test2; }
请问有人知道这是什么原因吗?
可能的原因及解决方法
- 依赖程序集未加载:Python.net仅加载了你指定的
{project}程序集,但TestObject可能定义在另一个独立程序集中。当Python.net尝试解析TestClass的成员类型时,找不到依赖的TestObject所在程序集,就会触发模块未找到错误。解决方式是通过clr.AddReference()将TestObject所在的程序集也添加到Python环境中。 - 路径配置不完整:
sys.append({path})仅添加了TestClass所在程序集的目录,未包含TestObject所在程序集的存放目录。需要把所有依赖程序集的目录都添加到sys.path中,确保Python.net能找到所有需要的模块。 - TestObject访问权限不足:如果
TestObject的定义未使用public修饰符,Python.net无法跨程序集访问该类型,也会导致解析失败。检查TestObject的定义是否为public class TestObject。 - 编译或版本问题:虽然C#项目编译通过,但可能存在依赖程序集版本不匹配,或者编译时未正确引用
TestObject所在项目。尝试重新编译整个解决方案,确保所有依赖项都被正确打包和引用。
内容的提问来源于stack exchange,提问作者arjen1984
相关产品推荐
相关产品推荐

