2012-10-04 14 views
5

Ich versuche, eine Python-Klasse durch C# .NET zu laufen Ironpython mit, ein paar der von der Python-Klasse importiert Module sind:Import Python-Modul über .NET C# Ironpython

import collections 
import nltk.classify.util 

Um zu importieren diese, wenn Ironpython läuft, ich bin mit dem GetSearchPath Sammlung des Script den Pfad zum Speicherort der Python-Bibliothek, die als solche hinzuzufügen:

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

Dieses feine scheint zu laufen für die Sammlungen Modul, aber nicht die nltk.classify.util, und ich die folgende Fehlermeldung erhalten, wenn die Methode Execute des Script Aufruf:

No genannt Modul nltk.classify.util

Auch wenn das Util-Modul in dem oben angegebenen Pfad lebt. Ich nehme an, dass das Problem mit der Art und Weise zu tun hat, wie der Import in der Python-Klasse spezifiziert wird ('.' Getrennt), nur nicht sicher, wie man es löst. Irgendwelche Ideen, wo ich falsch liege?

Antwort

8

Python verwendet die Struktur eines Paketnamens, um nach einem Modul zu suchen. Wenn Sie also nach nltk.classify.util fragen, sucht es ausgehend von jedem Verzeichnis im Suchpfad nach nltk\classify\util.py.

Also in Ihrem Beispiel möchten Sie dir2 wie folgt ändern:

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