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

时间:2011-12-15 18:59:28

标签: java python gcc osx-lion neo4j

我正在尝试将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结果,我的两个运行 理论是:

  1. 我以某种方式使用32位版本的Python或Java(虽然我 使用标准的官方安装,无法弄清楚如何 切换到64位或如果可能的话)

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

  3. another similar question,但解决方案是使用不同的适配器通过REST而不是直接挂钩到Java。如果必要,我会尝试,但如果可能的话,我宁愿使用推荐的Neo4j方法。

10 个答案:

答案 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