【问题标题】:How to install JPype on OS X Lion to use with Neo4j?如何在 OS X Lion 上安装 JPype 以与 Neo4j 一起使用?
【发布时间】:2012-01-21 10:48:12
【问题描述】:

我正在尝试将 Neo4j 用于一个项目,并希望通过 Python 与它进行交互,因为我是编程新手并且不懂任何 Java。我正在关注installation instructions,但我坚持 第一步,安装JPype。

我使用的是 OS X 10.7 (lion)。我觉得我的配置很标准 使用从 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. JPype 文件只能使用 GCC 4.0 而不是 4.2 编译。 但我在网上找不到任何关于如何回滚到 GCC 4.0(或 如果它随 2011 款 MacBook 一起提供,并且有一些方法可以强制 JPype 来编译)。

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

【问题讨论】:

  • +1 表示先尝试自己解决问题。
  • 我创建了a fork on github,其中包含此线程中提到的一些建议更改。

标签: java python gcc osx-lion neo4j


【解决方案1】:

对于仍在尝试安装 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。至少在我的系统上。 :)

【讨论】:

    【解决方案2】:

    这对我有用 - 建议您将第一行放在您的个人资料中。

    导出 JAVA_HOME=$(/usr/libexec/java_home) cd $JAVA_HOME sudo ln -s 包括标题 sudo cp 包括/darwin/* 包括/ 光盘-

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

    【讨论】:

      【解决方案3】:

      为了让 Will 的回答更具体一点:我必须通过添加他建议的目录路径来修改 setupInclusion(self) 方法,即 Mountain Lion 上的“/System/Library/Frameworks/JavaVM.framework/Headers”( Java 版本 1.6)。这样 JPype 的安装就成功了(虽然给出了一堆警告......)

      【讨论】:

        【解决方案4】:

        我也这样做了,但是选择

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

        【讨论】:

        • 是的,这很好。我应该提到操作系统版本,并编辑了我的答案以反映这一点。具体路径会因您的特定 MacOSX 版本和安装的 JDK 而异。
        【解决方案5】:

        我不是 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 没有任何问题。

        这有帮助吗?

        【讨论】:

        • 哇!那解决了它。我关注了您引用的博客文章,但我使用 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 作为我的 java_home,这是我通过运行 % /usr/libexec/java_home 得到的(另一篇博客文章告诉我这样做)。我将给 JPype 人发电子邮件,请他将其添加到文档中。
        • 在setup.py中需要添加self.jdkInclude = "darwin"self.javaHome = '/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home'。然后运行python setup.py install --user
        【解决方案6】:

        以下是我在自述文件中的说明,用于在 OS X 10.7 上安装 JPype。与此处的答案相同的想法,但差异足以保证提交。

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

        /usr/libexec/java_home
        

        如果你碰巧有一个 Headers 目录,你可能不需要重新安装 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 位于主目录中,但事实并非如此,因此我更改了主路径变量并在 setup.py 脚本中创建了一个新的内容路径变量 - 在 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
        

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

          • 感谢您添加此信息,但由于它不是直接答案,因此更适合作为评论
          【解决方案8】:

          在我的 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>
          

          【讨论】:

            【解决方案9】:

            对我来说,在山狮上

            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)
            

            【讨论】:

              【解决方案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)
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-07-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多