我正在尝试将Neo4j用于一个项目,并希望通过Python与它进行交互,因为我是编程的新手并且不知道任何Java。我跟着installation instructions,但我坚持了下来 第一步,即安装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
我找到了blog post about a gcc error with JPype,但我按照那里的指示无效。我还通过电子邮件发送了该帖子的作者,他告诉我从未实际使用过JPype,曾经在OS X 10.6中工作过,并且没有任何见解。
我还通过电子邮件发送了JPype的创建者,他告诉我他只使用Windows,并且不知道如何在OS X上安装。但是如果我们可以解决这个问题,我可以指出他的答案,也许他可以将解决方案添加到JPype文档中,并帮助很多其他人!
那么,有谁知道我做错了什么?我想用Neo4j,但是我 不懂Java所以我完全不知道如何修复编译器 错误。
根据阅读每个可用的Google结果,我的两个运行 理论是:
我以某种方式使用32位版本的Python或Java(虽然我 使用标准的官方安装,无法弄清楚如何 切换到64位或如果可能的话)
只能使用GCC 4.0而不是4.2来编译JPype文件。 但我无法在网上找到有关如何回滚到GCC 4.0(或 如果它附带2011款MacBook并且有一些方法可以强行推出 用它来编译的JPype)。
有another similar question,但解决方案是使用不同的适配器通过REST而不是直接挂钩到Java。如果必要,我会尝试,但如果可能的话,我宁愿使用推荐的Neo4j方法。
答案 0 :(得分: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 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
没有问题。
这有帮助吗?
答案 1 :(得分:10)
在我的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>
答案 2 :(得分: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)
答案 3 :(得分:2)
对于仍在尝试安装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
。至少在我的系统上。 :)
答案 4 :(得分:2)
以下是我在自述文件中添加的在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
答案 5 :(得分: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 vs 7 。随着7版本我开始时得到了相同的错误。
答案 6 :(得分:1)
对我来说,在Mountain Lion上
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)
答案 7 :(得分:0)
让Will的回答更加具体:我必须通过添加他建议的目录路径来修改setupInclusion(self)方法,即Mountain Lion上的'/System/Library/Frameworks/JavaVM.framework/Headers'( java版本1.6)。有了这个,JPype的安装成功了(虽然发出了一堆警告......)
答案 8 :(得分:0)
这对我有用 - 建议你把第一行放在你的个人资料中。
export JAVA_HOME = $(/ usr / libexec / java_home) cd $ JAVA_HOME sudo ln -s包括标题 sudo cp include / darwin / * include / cd -
请注意,我没有更改setup.py,而是更改了我的JDK安装。这有利于解决其他项目的问题。
答案 9 :(得分:-1)
对于那些试图在Mountain Lion上安装的人,我不得不进一步编辑setup.py文件以包含头文件:
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers