2011-12-15 36 views
7

我想爲一個項目使用Neo4j,並希望通過Python與它接口,因爲我是編程的新手,並且不知道任何Java。我正在關注installation instructions,但我堅持在 第一步,即安裝JPype。如何在OS X Lion上安裝JPype以與Neo4j一起使用?

我使用OS X 10.7(獅子)。我認爲我的配置是非常標準的 ,從Python網站下載Python 2.7.2,從Apple網站下載Java 1.6.0。

當我運行

% sudo python setup.py install 

在JPype安裝程序,我得到一個100行的有關各種.h文件的錯誤代碼,然後將其 與行終止:

lipo: can't figure out the architecture type of: /var/tmp// 
ccwOzLi9.out 

error: command 'gcc-4.2' failed with exit status 1 

我發現一個blog post about a gcc error with JPype,但我按照說明那裏無濟於事。我還發郵件給那個職位的作者,他告訴我從來沒有實際使用JPype,一直在OS X 10.6中工作,並沒有任何見解。

我還發郵件給JPype的創建者,他告訴我他只使用Windows,並且不知道如何在OS X上進行安裝。但是如果我們能解決這個問題,我可以指出他的答案,也許他可以將解決方案添加到JPype文檔中,並幫助很多其他人!

那麼,誰知道我在做什麼錯了?我想使用Neo4j,但我不知道Java,所以我完全喪失瞭如何修復編譯器 錯誤。

基於閱讀每一個谷歌的結果可用,我的兩個運行 的理論是:

  1. 我莫名其妙地使用Python的Java(或一個32位版本雖然我 使用標準正式安裝並不知道如何 切換到64位或者甚至可能)

  2. JPype文件只能使用GCC 4.0而不是4.2來編譯。 但我在網上找不到任何關於如何回滾到GCC 4.0(或 ,如果它隨2011 2011 MacBooks一起發售,並有一些方法來強制 JPype編譯與此相反)。

another similar question,但解決的辦法有使用不同的適配器,通過REST去直接掛鉤到Java的替代。如果必須的話,我會嘗試,但如果可能的話,我會更願意使用推薦的Neo4j方法。

+0

+1先試圖自己解決問題。 – edwardw 2011-12-16 02:09:27

+0

我創建了[github上的一個分支](https://github.com/originell/jpype),並提供了此主題中提到的一些建議更改。 – 2012-07-31 09:59:55

回答

11

我不是一個Python的傢伙,但試圖在我的機器上安裝JPype:

% uname -a 
Darwin fatty-i7.local.tld 11.2.0 Darwin Kernel Version 11.2.0: Tue Aug 9 20:54:00 PDT 2011; root:xnu-1699.24.8~1/RELEASE_X86_64 x86_64 
% java -version 
java version "1.6.0_29" 
Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-11M3527) 
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode) 

在OSX獅子,最新的JDK出現在這裏位於:

/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/JavaVM.framework/ 

一個小Googling出現這個職位:http://blog.y3xz.com/post/5037243230/installing-jpype-on-mac-os-x

我按照這些說明修改setup.py,然後運行sudo python setup.py install沒有問題。

這有幫助嗎?

+2

嗚!這解決了它。我跟着你引用的博客文章,但是我使用`/ System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home`作爲我的java_home,這是我運行`%/ usr/libexec/java_home`(這是另一篇博客文章告訴我的)。我會通過電子郵件發送給JPype的人,並要求他將其添加到文檔中。 – rogueleaderr 2011-12-15 22:17:31

+0

在setup.py中,您需要添加`self.jdkInclude =「darwin」`和`self.javaHome ='/ Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home'`。然後運行`python setup.py install --user` – Sandeep 2017-06-08 20:42:29

1

跟我一樣,但選擇

self.javaHome = '/Developer/SDKs/**MacOSX10.6.sdk**/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/' 

代替

self.javaHome = '/Developer/SDKs/**MacOSX10.7.sdk**/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/' 

意識到,我使用的版本6對7。在7版本中,我得到了與開始相同的錯誤。

+0

是的,這是一個很好的觀點。我應該提到操作系統版本,並編輯了我的答案以反映這一點。確切的路徑將隨您的特定版本的MacOSX和已安裝的JDK而變化。 – akollegger 2011-12-20 18:26:12

4

對於我來說,

self.javaHome = '/System/Library/Frameworks/JavaVM.framework/Versions/Current/' 

工作。

$ uname -a Darwin 11.4.0 Darwin Kernel Version 11.4.0: Mon Apr 9 19:32:15 PDT 2012; root:xnu-1699.26.8~1/RELEASE_X86_64 x86_64 

$ java -version java version "1.6.0_33" Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-11M3720) Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode) 
+1

YESSSSSSSSSSSSSSSSSSSS – 2012-07-27 00:51:46

1

對於我來說,在山獅

self.javaHome = '/System/Library/Frameworks/JavaVM.framework/' 

工作。

$uname -a 
Darwin 12.0.0 Darwin Kernel Version 12.0.0: Sun Jun 24 23:00:16 PDT 2012; root:xnu-2050.7.9~1/RELEASE_X86_64 x86_64 

$ java -version 
java version "1.6.0_33" 
Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-11M3720) 
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode) 
10

在我的獅子,「包括」在JDK目錄不見了,所以JPype找不到jni.h.

我在兩個地方,一個更新setup.py設置在哪裏可以找到罐子庫:

def setupMacOSX(self): 
    self.javaHome = '/System/Library/Frameworks/JavaVM.framework' 
    self.jdkInclude = "" 
    self.libraries = ["dl"] 
    self.libraryDir = [self.javaHome+"/Home/lib"] 
    self.macros = [('MACOSX',1)] 

和一個設置在哪裏可以找到jni.h:

def setupInclusion(self): 
    self.includeDirs = [ 
     self.javaHome+"/Headers", 
     <other stuff> 
-1

對於那些試圖安裝在山獅,我不得不進一步編輯setup.py文件包含頭文件的位置:

/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers

2

大家誰仍然在試圖安裝Jpype但同時更新的Mac OS:安德烈亞斯Kolleger的答案只是正常工作,但隨着的XCode 4.3的路徑更改爲/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/JavaVM.framework/Versions/Current/

在ML是MacOSX10.8.sdk。至少在我的系統上。 :)

2

以下是我在我的README中安裝JPype在OS X 10.7上的說明。與這裏的答案一樣的想法,但足夠不同以保證提交。

Java(pyype)的python接口需要mods到setup.py: 總之,您需要確保JPype設置。PY腳本可以看到我不得不從蘋果安裝Java第一,因爲我的默認OS X安裝沒有配備在典型的Java頭的安裝路徑,我發現通過執行你的Java SDK「頭」和「家」目錄 :

/usr/libexec/java_home 

如果你碰巧有一個接頭目錄,你也許並不需要重新安裝Java和可設置路徑乏低於基於這與那些在這些方向

可能不同我後,你的Java主目錄。安裝了Java,我發現新的安裝在:

/Library/Java/JavaVirtualMachines/ 

我的主目錄是:

/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Home/ 

,我的頭目錄是:

/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Headers/ 

1)JPype腳本假定頭是主目錄內,但它不是,所以我改變了主頁路徑var和創造了setup.py腳本新內容路徑變種 - 在setupMacOSX(self)

self.javaHome = '/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Home/' 
self.javaContents = '/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/' 

2)setupMacOSX(self),改變self.libraryDir

self.libraryDir = [self.javaContents + "/Libraries"] 
  • 注意,如必需的,但我沒有做到這一點,它的工作,所以也許嘗試沒有提到這一步首先

3)在setupInclusion ,路徑添加到您的「首頁/包括」目錄和你的「頭」導演:

self.javaHome+"/include", 
self.javaContents + "/Headers", 

4)運行安裝現在應該工作:

sudo python setup.py install 
0

爲了讓威爾的回答更具體一點:我不得不修改setupInclusion(個體經營)方法,通過加入他建議的目錄路徑,即「/System/Library/Frameworks/JavaVM.framework/Headers」上山獅(Java版本1.6)。隨着JPype的安裝成功(雖然給了一堆警告......)

0

這是什麼爲我工作 - 建議你把你的配置文件的第一行。

出口JAVA_HOME = $(在/ usr/libexec目錄/ JAVA_HOME) CD $ JAVA_HOME 須藤LN -s包括頭 須藤CP包括/達爾文/ *包括/ CD -

注意,而不是改變設置.py,我正在更改我的JDK安裝。這有利於爲其他項目解決問題。