2012-10-04 11 views
5

Próbuję uruchomić klasę Pythona do C# .NET przy użyciu IronPython, kilka modułów importowanych przez klasę Pythona są:Importuj moduł Pythona do C# .NET przy użyciu IronPython

import collections 
import nltk.classify.util 

W celu import te podczas pracy IronPython, używam GetSearchPath kolekcję ScriptEngine dodać ścieżkę do lokalizacji biblioteki Pythona, takich jak:

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); 

To wydaje się działać dobrze dla kolekcjach moduł, ale nie nltk.classify.util, i pojawia się następujący błąd podczas wywoływania metody Execute z ScriptEngine:

nr moduł o nazwie nltk.classify.util

Nawet jeśli moduł użytkowy znajduje się w ścieżce określonej powyżej. Rozumiem, że problem dotyczy sposobu, w jaki import jest określony w klasie Pythona ("."), Ale nie wiem, jak go rozwiązać. Jakieś pomysły, które idą źle?

Odpowiedz

8

Python używa struktury nazwy pakietu do wyszukania modułu, więc jeśli poprosisz o numer nltk.classify.util, będzie on szukał nltk\classify\util.py zaczynając od każdego katalogu w ścieżce wyszukiwania.

Tak w przykładzie, chcesz zmienić dir2 następująco:

string dir2 = @"C:\Python27\Lib\site-packages"; 
Powiązane problemy