2011-09-16 17 views
9

Utilizzo Visual Studio 2010. Dispongo di un progetto di console IronPython e di un progetto di console C#. Questo script IronPython funziona bene quando l'eseguo da solo:Utilizzo di NLTK in C# tramite IronPython

import nltk 

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

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

Ecco il programma di console C#, che non funziona bene:

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

ottengo una ImportException: No module named nltk. Cosa mi manca?

+1

È possibile interagire con il runtime 'ipy' e regolare il percorso lì? – Travis

+0

L'ho provato anche io. Cioè la risposta accettata in http://stackoverflow.com/questions/1371994/importing-external-module-in-ironpython –

risposta

3

suona come se fosse necessario aggiornare sys.path in modo da puntare ovunque vada NLTK.

controllo questo fuori: Importing external module in IronPython

+0

se si intende qualcosa come sys.path.append (r "c: \ Programmi (x86) \ IronPython \ Lib ") che non funziona o –

+1

Certo che non funziona. Il backslash è il carattere di escape della stringa. Se vuoi inserire un percorso in una stringa Python, devi fare C:/Progr ... o C: \\ Progr ... –

+1

Inoltre, non è insolito che un software portatile abbia un problema con i percorsi che contengono spazi nel nome. Hai provato a installare un'altra istanza di IronPython in C: \ IronPython in modo da non avere alcuna directory con spazio nei nomi? –

0

Impressionante notizie, Visual Studio 2017 è integrato con la distribuzione di Python di Anaconda che ha NTLK e altri pacchetti di apprendimento automatico.