Как установить JPype на OS X Lion для использования с Neo4j?

Я пытаюсь использовать Neo4j для проекта и хочу взаимодействовать с ним через Python, так как я новичок в программировании и не знаю Java. Я следую инструкциям по установке, но я застрял на первом шаге, который заключается в установке JPype.

Я использую OS X 10.7 (лев). Я думаю, что моя конфигурация довольно стандартна с Python 2.7.2, загруженным с сайта Python, и Java 1.6.0, загруженным с сайта Apple.

Когда я бегу

% 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

Я нашел сообщение в блоге об ошибке gcc с 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 (или если он поставляется с MacBook 2011 года, и есть способ заставить JPype скомпилировать его вместо этого).

Есть еще один похожий вопрос, но решение заключается в том, чтобы использовать другой адаптер, который проходит через REST, а не подключаться непосредственно к Java. Я попробую это, если придется, но я действительно предпочел бы использовать рекомендованный метод Neo4j, если это возможно.

10 ответов

Решение

Я не парень 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 без проблем.

Это помогает?

На моем Lion каталог "include" в JDK пропал, поэтому 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>

Для меня,

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)

Вот инструкции, которые я вставил в свой README для установки JPype на OS X 10.7. Та же идея, что и здесь, но достаточно отличается, чтобы оправдать представление.

Интерфейсу python для java (JPype) нужны моды для setup.py: Итак, вам нужно убедиться, что сценарий JPype setup.py может видеть ваш каталог SDK "Заголовки" и "Домашний" Java SDK, которые мне нужно было установить Java от Apple во-первых, поскольку моя установка по умолчанию 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/

и мой каталог заголовка был:

/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Headers/

1) Сценарий JPype предполагает, что заголовки находятся в домашнем каталоге, но это не так, поэтому я изменил домашний путь var и создал новый путь к содержимому в сценарии 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

Для всех, кто все еще пытается установить Jpype, но тем временем обновил Mac OS: ответ Андреаса Коллегера просто отлично работает, но с XCode 4.3 путь изменился на /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/JavaVM.framework/Versions/Current/

В ОД это MacOSX10.8.sdk, По крайней мере, в моей системе.:)

Я сделал то же самое, но выбрав

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 против 7. С 7 версией я получил те же ошибки, что и в начале.

Для меня на горном льве

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)

Вот что сработало для меня - рекомендую поставить первую строчку в своем профиле.

export JAVA_HOME = $ (/ usr / libexec / java_home) cd $ JAVA_HOME sudo ln -s include Заголовки sudo cp include/darwin/* include/ cd -

Обратите внимание, что вместо изменения setup.py я изменяю свою установку JDK. Это имеет преимущество в устранении проблемы для других проектов.

Чтобы сделать ответ Уилла более конкретным: мне пришлось изменить метод setupInclusion(self), добавив предложенный им путь к каталогу, то есть "/System/Library/Frameworks/JavaVM.framework/Headers" в Mountain Lion (версия Java 1.6).). При этом установка JPype прошла успешно (хотя и выдал кучу предупреждений...)

Для тех, кто пытается установить на Mountain Lion, мне пришлось дополнительно отредактировать файл setup.py, чтобы включить заголовочные файлы здесь:

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

Другие вопросы по тегам