5

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 クラス (「.」区切り) でインポートを指定する方法に関係していると思いますが、解決方法がわかりません。どこが間違っているのでしょうか?

4

1 に答える 1

8

Python はパッケージ名の構造を使用してモジュールを検索するため、要求するnltk.classify.utilnltk\classify\util.py、検索パスの各ディレクトリから開始して検索します。

したがって、あなたの例では、次のように変更dir2します。

string dir2 = @"C:\Python27\Lib\site-packages";
于 2012-10-04T22:53:25.340 に答える