2011-09-16 19 views
9

Estoy usando Visual Studio 2010. Tengo un proyecto de consola IronPython y un proyecto de consola C#. Este script IronPython funciona bien cuando corro por sí mismo:Uso de NLTK en C# a través de IronPython

import nltk 

def Simple(): 
    baconIpsumFile = open('baconipsum.txt', 'r') 
    baconIpsumCorpus = baconIpsumFile.read() 

    tokens = nltk.word_tokenize(baconIpsumCorpus) 
    text = nltk.Text(tokens) 
    print text 

Este es el programa de consola de C#, que no funciona bien:

using IronPython.Hosting; 

namespace IronNLTK.CSharp.Console 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var ipy = Python.CreateRuntime(); 
      dynamic test = ipy.UseFile("C:\\Path\\To\\Program.py"); 
      test.Simple(); 
     } 
    } 
} 

Obtengo un ImportException: No module named nltk. ¿Qué me estoy perdiendo?

+1

¿Puede interactuar con el tiempo de ejecución 'ipy' y ajustar la ruta allí? – Travis

+0

También lo he intentado. Es decir. la respuesta aceptada en http://stackoverflow.com/questions/1371994/importing-external-module-in-ironpython –

Respuesta

3

Parece que necesita actualizar sys.path para señalar dónde vive NLTK.

mira esto: Importing external module in IronPython

+0

si se refiere a algo como sys.path.append (r "c: \ Archivos de programa (x86) \ IronPython \ Lib ") que tampoco funciona –

+1

Por supuesto que eso no funciona. Backslash es el carácter de escape de cadena. Si desea poner una ruta en una cadena de Python, entonces necesita hacer C:/Progr ... o C: \\ Progr ... –

+1

Además, no es inusual que el software portátil tenga un problema con las rutas. que contienen espacios en el nombre. ¿Has intentado instalar otra instancia de IronPython en C: \ IronPython para que no tengas ningún directorio con espacio en los nombres? –

0

noticias impresionante, Visual Studio 2017 está integrado con la distribución del pitón de Anaconda que tiene NTLK y otros paquetes de aprendizaje automático.

Cuestiones relacionadas