2014-11-05 11 views
5

Sto provando a creare l'interfaccia python di NLP stanford su Ubuntu 12.04.5 LTS. Ci sono due passaggi necessari, il primo dei quali è:Errori di installazione dell'interfaccia python Stanford CoreNLP

  1. compilazione Jpype eseguendo "setup rastrello" in 3rdParty/jpype

Nel fare ciò ho il seguente errore:

In file included from src/native/common/jp_monitor.cpp:17:0: 
src/native/common/include/jpype.h:45:17: fatal error: jni.h: No such file or directory 
compilation terminated. 
error: command 'gcc' failed with exit status 1 
rake aborted! 
Command failed with status (1): [cd JPype-0.5.4.1 && python setup.py build...] 

I messaggi di errore indicano che mi manca jni.h, quindi come suggerito here se ho eseguito il comando dpkg-query -L openjdk-7-jdk | grep "jni.h" ottenendo /usr/lib/jvm/java-7-openjdk-amd64/include/jni.h.

Credo che ciò significa che ho il jni.h sul mio sistema, quindi sono molto confuso al momento. Qual è la causa dell'errore? Puoi suggerire qualche correzione?

Grazie per il vostro aiuto!


un paio di più APPROFONDIMENTI

Qui è l'istruzione che causa l'errore:

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include/linux -Isrc/native/common/include -Isrc/native/python/include -I/usr/include/python2.7 -c src/native/common/jp_class.cpp -o build/temp.linux-x86_64-2.7/src/native/common/jp_class.o 
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for Ada/C/ObjC but not for C++ [enabled by default] 
In file included from src/native/common/jp_class.cpp:17:0:src/native/common/include/jpype.h:45:17: fatal error: jni.h: No such file or directory 
compilation terminated. 
error: command 'gcc' failed with exit status 1 

E 'venuta dalla compilazione di JPype necessaria per l'interfaccia pitone. Non so perché, ma include percorsi che non ho nel mio file system (ad esempio -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include/linux).

Come posso configurare questi percorsi correttamente?

risposta

0

Questo problema è un problema di percorso (come detto nella domanda e risposto correttamente da @vikramls).

A quanto pare quando si esegue lo script per installare l'interfaccia pitone del StanfordNLP se JPype manca otterrà installato con il seguente comando:

python setup.py install 

Ora, se si apre il file setup.py si può vedere la parte seguente che imposta i java percorsi per una macchina linux (sto correndo su ubuntu):

def setupLinux(self): 
    self.javaHome = os.getenv("JAVA_HOME") 
    if self.javaHome is None : 
     self.javaHome = '/usr/lib/jvm/java-1.5.0-sun-1.5.0.08' # Ubuntu linux 
     # self.javaHome = '/usr/java/jdk1.5.0_05'  
    self.jdkInclude = "linux"  
    self.libraries = ["dl"] 
    self.libraryDir = [self.javaHome+"/lib"] 

Chiaramente questo percorso non funziona su ogni macchina, quindi ci sono 2 possibili soluzioni :

  1. Prima di eseguire lo script di installazione esportare una variabile chiamata JAVA_HOME con la posizione della vostra installazione di Java. Cioè export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64 nel mio caso.

  2. Come this page dice che si può impostare un sistema automatico comprendono variabile per gcc con il seguente comando export C_INCLUDE_PATH=some_path e che percorso deve essere impostato su dove le librerie Java sono sulla vostra macchina

2

I percorsi di inclusione specificati non includono il percorso in cui si trova jni.h.

Dal grep, jni.h si trova qui: /usr/lib/jvm/java-7-openjdk-amd64/include/jni.h

i percorsi di inclusione specificati nelle args gcc sono: -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include/linux -Isrc/native/common/include -Isrc/native/python/include -I/usr/include/python2.7

sembra a me che si sta costruendo con il Java sbagliata? Si dispone di un'installazione java-1.5.0 e di un'installazione java-7-openjdk - questa ha il file jni.h mancante.

+0

Grazie mille per la risposta! Questo è esattamente il problema, l'unica cosa è che non avevo idea di come risolverlo;) ora sono riuscito! – Matteo

2

In base alla seguente domanda, sembra che sia possibile risolvere questo problema impostando JAVA_HOME.

JPype compile problems

Quindi, prima di costruire l'uso:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 
+0

Sì, l'ho appena capito da solo! lol, questo è un modo strano di usare una taglia ...; D mi ha fatto più motivato a trovare la risposta credo! – Matteo

+0

Ora ottengo un errore simile ma questa volta con il percorso 'Python.h':' src/native/python/include/jpype_python.h: 24: 20: errore fatale: Python.h: nessun file o directory '. Dal momento che non c'è alcuna variabile in 'setup.py' che imposta hai un'idea di cosa dovrei fare? Grazie – Matteo

+0

Verifica di avere il pacchetto pyrhon-dev. Potrebbe avere un nome leggermente diverso sulla tua distribuzione. – kichik