我正在尝试使用 IronPython 通过 C# .NET 运行 Python 类,Python 类导入的几个模块是:
import collections
import nltk.classify.util
为了在运行 IronPython 时导入这些,我使用 ScriptEngine 的 GetSearchPath 集合将路径添加到 Python 库的位置,如下所示:
ICollection<string> paths = pyEngine.GetSearchPaths();
string dir = @"C:\Python27\Lib\";
paths.Add(dir);
string dir2 = @"C:\Python27\Lib\site-packages\nltk\classify\";
paths.Add(dir2);
pyEngine.SetSearchPaths(paths);
对于 collections 模块,这似乎运行良好,但对于 nltk.classify.util,我在调用 ScriptEngine 的 Execute 方法时遇到以下错误:
没有名为 nltk.classify.util 的模块
即使是 util 模块也位于上面指定的路径中。我认为这个问题与 Python 类中指定导入的方式有关('.' 分隔),只是不确定如何解决它。有什么想法哪里出了问题吗?
最佳答案
Python 使用包名称的结构来搜索模块,因此如果您请求 nltk.classify.util
,它将查找 nltk\classify\util.py
从搜索路径中的每个目录开始。
因此,在您的示例中,您希望按如下方式更改 dir2
:
string dir2 = @"C:\Python27\Lib\site-packages";
关于c# - 使用 IronPython 通过 C# .NET 导入 Python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735642/