【问题标题】:Import Python Module through C# .NET using IronPython使用 IronPython 通过 C# .NET 导入 Python 模块
【发布时间】:2012-10-04 20:45:45
【问题描述】:

我正在尝试使用 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 类中指定导入的方式有关('.' 分隔),只是不知道如何解决它。有什么想法哪里出错了吗?

【问题讨论】:

  • ToOsIK,你能展示一下如何将模块导入 Python 引擎吗?

标签: c# python ironpython nltk


【解决方案1】:

Python 使用包名的结构来搜索模块,因此如果您要求nltk.classify.util,它将从搜索路径中的每个目录开始查找nltk\classify\util.py

所以在你的例子中,你想改变dir2如下:

string dir2 = @"C:\Python27\Lib\site-packages";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 2023-03-20
    相关资源
    最近更新 更多