c# - 使用 IronPython 通过 C# .NET 导入 Python 模块

标签 c# python ironpython nltk

我正在尝试使用 IronPython 通过 C# .NET 运行 Python 类,Python 类导入的几个模块是:

import collections
import nltk.classify.util

为了在运行 IronPython 时导入这些,我使用 ScriptEngineGetSearchPath 集合将路径添加到 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/

相关文章:

c# - Devexpress MVC 对象作为回调参数

c# - 从 Unity 中的脚本关闭脚本

python - 使用 python 设置背景图像

Python:sys.path.append 与 import?

c# - 在 IronPython 中比较枚举值

c# - 使用一个 DBContext 在 Entity Framework 中执行多个 Linq 到实体查询仅连接一次到数据库

c# - Mvc Asp 排序项目

python - 在 Scikit-Learn 中保存的模型上测试未知数据时,如何获得预测准确性?

python - 按具有多个相似值的行对 Pandas 数据帧进行排序

python - 如何在保持元组顺序的同时,根据元组的索引值从列表中删除重复的元组?