Как установить JPype на OS X Lion для использования с Neo4j? - PullRequest
7 голосов
/ 15 декабря 2011

Я пытаюсь использовать 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 ]

11 голосов
/ 16 декабря 2011

Я не парень из 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.

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

10 голосов
/ 21 сентября 2012

На моем 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>
4 голосов
/ 19 июля 2012

Для меня

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)
2 голосов
/ 10 января 2013

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

Интерфейсу Python для java (JPype) нужны моды для setup.py: Таким образом, вы должны убедиться, что сценарий JPype setup.py может видеть ваш каталог 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
2 голосов
/ 23 ноября 2012

Для всех, кто все еще пытается установить 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/

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

1 голос
/ 23 августа 2012

для меня, на горном льве

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)
1 голос
/ 16 декабря 2011

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

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

0 голосов
/ 01 марта 2014

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

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

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

0 голосов
/ 31 марта 2013

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

0 голосов
/ 29 сентября 2012

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

/ System / Library / Каркасы / JavaVM.framework / Версия / текущий / Headers

...