2014-11-05 34 views
5

Ubuntu 12.04.5 LTS'de stanford NLP'nin python arabirimini oluşturmaya çalışıyorum. olduğu ilki gereken iki adım vardır: 3rdParty/Jpype içinde "tırmık ayarları" çalıştırarakStanford CoreNLP python arabirimi yükleme hataları

  1. derleme Jpype

Bunu yaparken aşağıdaki hatayı:

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...] 

Hata iletileri, dpkg-query -L openjdk-7-jdk | grep "jni.h"/usr/lib/jvm/java-7-openjdk-amd64/include/jni.h alırken jni.h, here önerildiği gibi eksik olduğumu söylüyor.

Bu, sistemimde jni.h var demektir, bu yüzden şu an kafam çok karışık. Hataya neden olan nedir? Herhangi bir düzeltme önerebilir misin?

Yardımlarınız için teşekkürler! DAHA


BİRKAÇ KAVRAYIŞ İşte

talimat hataya neden olan: Bu piton arabirimi için gerekli JPype derlenmesi geliyor

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 

. Nedenini bilmiyorum ama dosya sistemimde bulunmayan yolları (ör. -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include/linux) içerir.

Bu yolları nasıl doğru yapılandırabilirim?

cevap

0

Bu sorun bir yol sorunudur.JPype aşağıdaki komutu ile kurulan eksikse

Görünüşe StanfordNLP ait piton arayüzünü yüklemek için komut çalıştırırken: Artık dosyayı açarsanız

python setup.py install 

setup.py aşağıdaki kısmını görebilirsiniz

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"] 

Açıkçası bu yol her makinede çalışmaz, bu nedenle 2 olası çözüm vardır: hangi bir linux makine için java yolları (Ben ubuntu üzerinde koşuyorum) belirler :

  1. kurulum komut dosyası java kurulum konumu ile JAVA_HOME adlı bir değişken ihracat çalıştırmadan önce. Yani Benim durumumda export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64. this page gibi

  2. Eğer java kütüphaneleri makinenizde

2

Belirtilen içerme yolları, jni.h'nin bulunduğu yolu içermez. senin grep itibaren

, jni.h burada bulunur: /usr/lib/jvm/java-7-openjdk-amd64/include/jni.h gcc args belirtilen yolları dahil

şunlardır: -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

yanlış java ile inşa ediyoruz geldi bana? Bir java-1.5.0 yükleme ve bir java-7-openjdk yükleme var - bu bir eksik jni.h dosya var.

+0

teşekkürler cevap için çok nerede ayarlanması gerekir otomatik aşağıdaki komutu export C_INCLUDE_PATH=some_path ve bu yol ile gcc için değişkeni dahil ayarlayabilirsiniz diyor! Bu tam olarak sorun, tek şey, nasıl çözeceğime dair hiçbir fikrim yoktu;) şimdi başardı! – Matteo

2

Aşağıdaki soruya dayanarak, bu ayarı JAVA_HOME ayarlayarak düzeltebilirsiniz.

JPype compile problems

Yani kullanımını oluşturmadan önce: (söz söylediği ve doğru olarak @vikramls tarafından yanıtlandı olarak)

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

Evet, aslında bunu kendi başıma buldum! lol, bu bir kelle kullanmanın garip bir yolu ...; sanırım cevapları bulmak için daha çok motive ettim! – Matteo

+0

Şimdi benzer bir hatayı alıyorum ama bu sefer 'Python.h' yolu ile:' src/native/python/include/jpype_python.h: 24: 20: ölümcül hata: Python.h: Böyle bir dosya ya da dizin yok. Ne yapmam gerektiğine dair bir fikriniz olan 'setup.py' değişkeninde herhangi bir değişken olmadığından? Teşekkürler – Matteo

+0

Pyrhon-dev paketinin olduğunu doğrulayın. Dağıtımınızda biraz farklı bir isim olabilir. – kichik