2012-10-04 13 views
5

Estoy tratando de ejecutar una clase de Python a C# .NET utilizando IronPython, un par de los módulos importados por la clase de Python son:módulo de Python de importación a través de C# .NET utilizando IronPython

import collections 
import nltk.classify.util 

Con el fin de importación éstos cuando se ejecuta IronPython, estoy usando el GetSearchPath colección de la ScriptEngine para agregar la ruta a la ubicación de la biblioteca de Python, tales como:

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

Esto parece funcionar bien para las colecciones del módulo, pero no el nltk.classify.util, y me sale el error siguientes al llamar al método Execute del ScriptEngine:

Sin módulo denominado nltk.classify.util

Incluso aunque el módulo util viva en la ruta especificada anteriormente. Entiendo que el problema tiene que ver con la forma en que se especifica la importación en la clase de Python ('.' Delimitado), simplemente no estoy seguro de cómo resolverlo. ¿Alguna idea de dónde estoy yendo mal?

Respuesta

8

Python usa la estructura de un nombre de paquete para buscar un módulo, por lo que si solicita nltk.classify.util buscará nltk\classify\util.py comenzando desde cada directorio en la ruta de búsqueda.

Así que en tu ejemplo, si desea cambiar dir2 de la siguiente manera:

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