如何在OS X Lion上安装JPype以便与Neo4j一起使用?
我正在尝试用Neo4j做一个项目,想通过Python来和它互动,因为我刚开始学编程,对Java不太了解。我在按照安装说明进行操作,但在第一步,也就是安装JPype时遇到了麻烦。
我使用的是OS X 10.7(狮子系统)。我的配置应该是比较标准的,Python是从官网上下载的2.7.2版本,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错误的博客,但按照那里的说明操作后还是没能解决问题。我还给那篇文章的作者发了邮件,他告诉我他其实从来没有用过JPype,他是在OS X 10.6上工作,所以也没有什么建议。
我还给JPype的创建者发了邮件,他告诉我他只用Windows,对如何在OS X上安装没有任何头绪。不过如果我们能解决这个问题,我可以把答案告诉他,也许他能把解决方案加到JPype的文档里,帮助更多的人!
所以,有人知道我哪里出错了吗?我想用Neo4j,但我不懂Java,所以对如何修复编译错误完全无从下手。
根据我在谷歌上找到的所有结果,我有两个猜测:
我可能在使用32位的Python或Java(虽然我用的是标准的官方安装,但不知道怎么切换到64位,或者这是否可能)。
JPype的文件只能用GCC 4.0编译,而不是4.2。但我在网上找不到关于如何回退到GCC 4.0的信息(或者它是否随2011年的MacBook一起提供,以及是否有办法强制JPype用它编译)。
还有另一个类似的问题,但那里的解决方案是使用一个不同的适配器,通过REST而不是直接连接Java。如果必须的话我会尝试那个,但我真的希望能用推荐的Neo4j方法,如果可能的话。
10 个回答
对我来说,
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)
在我的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",
<other stuff>
我不是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
,没有遇到任何问题。
这样有帮助吗?