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

rog*_*err 7 python java gcc neo4j osx-lion

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

我正在使用OS X 10.7(狮子).我认为我的配置非常标准,从Python网站下载的Python 2.7.2和从Apple网站下载的Java 1.6.0.

我跑的时候

% sudo python setup.py install
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

我发现了一篇关于JPype的gcc错误博客文章,但我按照那里的说明无济于事.我还通过电子邮件发送了该帖子的作者,他告诉我从未实际使用过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款MacBooks,并且有一些方法可以强制JPype使用它进行编译).

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

ako*_*ger 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)
Run Code Online (Sandbox Code Playgroud)

在OSX Lion上,最新的JDK似乎位于此处:

/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/JavaVM.framework/
Run Code Online (Sandbox Code Playgroud)

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

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

这有帮助吗?

  • 呜!这解决了它.我按照你引用的博客文章,但我使用`/ System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home`作为我的java_home,这是我从运行`%/ usr/libexec /得到的java_home`(另一篇博文告诉我要做).我会给JPype发送电子邮件,并要求他将其添加到文档中. (2认同)

Jac*_*son 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)]
Run Code Online (Sandbox Code Playgroud)

一个设置在哪里找到jni.h:

def setupInclusion(self):
    self.includeDirs = [
        self.javaHome+"/Headers",
        <other stuff>
Run Code Online (Sandbox Code Playgroud)

  • 这也适用于Mountain Lion. (2认同)