如何在OS X Lion上安装JPype以与Neo4j一起使用?

我正在尝试将Neo4j用于一个项目,并希望通过Python与它进行交互,因为我是编程的新手并且不知道任何Java。 我正在按照安装说明操作 ,但我坚持第一步,即安装JPype。

我使用的是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 

我发现了一篇关于JPype的gcc错误的博客文章 ,但我按照那里的说明无济于事。 我还通过电子邮件发送了该post的作者,他告诉我从未实际使用过JPype,曾在OS X 10.6中工作过,并且没有任何见解。

我还通过电子邮件发送了JPype的创建者,他告诉我他只使用Windows,并且不知道如何在OS X上安装。但是如果我们可以解决这个问题,我可以指出他的答案,也许他可以添加JPype文档的解决方案,也帮助了很多其他人!

那么,有谁知道我做错了什么? 我想使用Neo4j,但我不懂Java,所以我完全不知道如何解决编译错误。

基于阅读所有可用的Google结果,我的两个运行理论是:

  1. 我在某种程度上使用32位版本的Python或Java(虽然我使用标准的官方安装,但无法弄清楚如何切换到64位或甚至可能)

  2. JPype文件只能使用GCC 4.0而不是4.2编译。 但我无法在网上找到有关如何回滚到GCC 4.0的任何内容(或者它是否附带2011款MacBook,并且有一些方法可以强制JPype使用它进行编译)。

还有另一个类似的问题 ,但解决方案是使用一个不同的适配器,通过REST而不是直接挂钩到Java。 如果必须,我会尝试,但如果可能的话,我宁愿使用推荐的Neo4j方法。

我不是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 Lion上,最新的JDK似乎位于此处:

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

一篇小小的谷歌搜索出现在这篇文章中: http : //blog.y3xz.com/post/5037243230/installing-jpype-on-mac-os-x

我按照这些说明修改setup.py,然后运行sudo python setup.py install没有问题。

这有帮助吗?

在我的Lion上,JDK中的“include”目录消失了,所以JPype找不到jni.h.

我在两个地方更新了setup.py,一个用于设置查找jar库的位置:

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

为了我,

 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) 

以下是我在自述文件中添加的在OS X 10.7上安装JPype的说明。 与此处的答案相同,但不同以保证提交。

java(JPype)的python接口需要setup.py的mod:总之,你需要确保JPype setup.py脚本可以看到你的Java SDK“Headers”和“Home”目录我必须从Apple安装Java首先,因为我的默认OS X安装没有在典型的Java安装路径中找到Headers,我通过执行它找到了:

 /usr/libexec/java_home 

如果你碰巧有一个Header目录,你可能不需要重新安装Java,并且可以根据你的java HOME目录设置下面的路径变量,这可能与这些方向不同

安装Java后,我发现新安装在:

 /Library/Java/JavaVirtualMachines/ 

我的主目录是:

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

和我的Header目录是:

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

1)JPype脚本假定Headers在Home目录中但不是,所以我更改了Home path var并在setup.py脚本中创建了一个新的Content path var – 在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中,添加“Home / include”目录和“Headers”目录的路径:

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

4)运行安装现在应该工作:

 sudo python setup.py install 

对于仍在尝试安装Jpype但同时更新Mac OS的每个人:Andreas 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 。 至少在我的系统上。 🙂

对我来说,山狮

 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) 

我做了同样的事,但选择了

 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版本我开始时得到了相同的错误。

为了使Will的答案更加具体:我必须通过添加他建议的目录路径来修改setupInclusion(self)方法,即Mountain Lion上的’/System/Library/Frameworks/JavaVM.framework/Headers’(java版本1.6) )。 有了这个,JPype的安装成功了(虽然发出了一堆警告……)

这对我有用 – 建议你把第一行放在你的个人资料中。

export JAVA_HOME = $(/ usr / libexec / java_home)cd $ JAVA_HOME sudo ln -s include Headers sudo cp include / darwin / * include / cd –

请注意,我没有更改setup.py,而是更改了我的JDK安装。 这有利于解决其他项目的问题。

对于那些试图在Mountain Lion上安装的人,我不得不进一步编辑setup.py文件以包含头文件:

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