¿Cómo instalar JPype en OS X Lion para usar con Neo4j?

Estoy tratando de usar Neo4j para un proyecto, y quiero interactuar con él a través de Python ya que soy un novato en la progtwigción y no conozco ningún Java. Sigo las instrucciones de instalación , pero estoy atascado en el primer paso, que es instalar JPype.

Estoy usando OS X 10.7 (león). Creo que mi configuración es bastante estándar con Python 2.7.2 descargado del sitio web de Python y Java 1.6.0 descargado del sitio web de Apple.

Cuando corro

% sudo python setup.py install 

En el instalador de JPype, obtengo alrededor de 100 líneas de código de error sobre varios archivos .h, luego termina con las líneas:

 lipo: can't figure out the architecture type of: /var/tmp// ccwOzLi9.out error: command 'gcc-4.2' failed with exit status 1 

Encontré una publicación de blog sobre un error de gcc con JPype , pero seguí las instrucciones allí en vano. También le envié un correo electrónico al autor de esa publicación y me dijo que en realidad nunca había usado JPype, que había estado trabajando en OS X 10.6 y que no tenía ninguna idea.

También le envié un correo electrónico al creador de JPype, quien me dijo que solo usa Windows, y no tiene idea de cómo hacer que la instalación funcione en OS X. Pero si podemos resolver esto, puedo indicarle la respuesta y tal vez pueda agregar ¡La solución a la documentación de JPype y ayuda a muchas otras personas también!

Entonces, ¿alguien sabe lo que estoy haciendo mal? Me gustaría usar Neo4j, pero no sé Java, así que no sé cómo corregir un error del comstackdor.

Basándome en la lectura de cada resultado de Google disponible, mis dos teorías actuales son que:

  1. De alguna manera estoy usando una versión de 32 bits de Python o de Java (aunque utilicé instalaciones oficiales estándar y no sé cómo cambiar a 64 bits o si eso es posible)

  2. Los archivos JPype solo pueden comstackrse utilizando GCC 4.0 en lugar de 4.2. Pero no puedo encontrar nada en línea sobre cómo revertir a GCC 4.0 (o si viene con los MacBooks 2011 y hay una manera de obligar a JPype a comstackr con eso).

Hay otra pregunta similar , pero la solución es usar un adaptador diferente que pase por REST en lugar de conectarse directamente a Java. Intentaré eso si es necesario, pero preferiría usar el método Neo4j recomendado si es posible.

No soy un tipo de Python, pero intenté instalar JPype en mi máquina:

 % 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) 

En OSX Lion, el último JDK parece estar ubicado aquí:

 /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/JavaVM.framework/ 

Un poco de Google apareció en esta publicación: http://blog.y3xz.com/post/5037243230/installing-jpype-on-mac-os-x

Seguí esas instrucciones para modificar setup.py, luego ejecuté sudo python setup.py install sin problemas.

¿Eso ayuda?

En mi Lion, el directorio “include” en el JDK había desaparecido, por lo que JPype no pudo encontrar jni.h.

Actualicé setup.py en dos lugares, uno para establecer dónde encontrar las bibliotecas 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)] 

Y uno para establecer dónde encontrar jni.h:

 def setupInclusion(self): self.includeDirs = [ self.javaHome+"/Headers",  

Para mi,

 self.javaHome = '/System/Library/Frameworks/JavaVM.framework/Versions/Current/' 

trabajó.

 $ 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) 

Aquí están las instrucciones que puse en mi README para instalar JPype en OS X 10.7. La misma idea que las respuestas aquí, pero lo suficientemente diferente como para justificar la presentación.

La interfaz de Python para java (JPype) necesita modificaciones para setup.py: En resumen, debe asegurarse de que el script de instalación de JPype pueda ver sus “Cabeceras” y el directorio “Inicio” de Java SDK. Tenía que instalar Java desde Apple Primero, ya que mi instalación predeterminada de OS X no vino con los encabezados en la ruta de instalación típica de Java que encontré ejecutando:

 /usr/libexec/java_home 

Si tiene un directorio de encabezados, es probable que no necesite volver a instalar Java y puede configurar las siguientes vars de ruta según su directorio HOME de Java, que probablemente sea diferente de las que se encuentran en estas direcciones.

Después de instalar Java, encontré la nueva instalación en:

 /Library/Java/JavaVirtualMachines/ 

Mi directorio de inicio era:

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

y mi directorio de encabezado era:

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

1) La secuencia de comandos de JPype supone que los encabezados están dentro del directorio de Inicio pero no lo está, así que cambié la var. De ruta de inicio y creé una nueva var de ruta de contenido en la secuencia de comandos setup.py – En 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) En setupMacOSX(self) , cambie self.libraryDir :

 self.libraryDir = [self.javaContents + "/Libraries"] 
  • Tenga en cuenta que este paso se mencionó como requerido pero no tuve que hacer esto para que funcione, así que intente sin él primero.

3) En setupInclusion, agregue rutas a su directorio “Home / include” y su directorio “Headers”:

 self.javaHome+"/include", self.javaContents + "/Headers", 

4) La ejecución de la instalación debería funcionar ahora:

 sudo python setup.py install 

Para todas las personas que aún intentan instalar Jpype pero que han actualizado Mac OS: la respuesta de Andreas Kolleger simplemente funciona bien, pero con XCode 4.3 la ruta cambió a /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/JavaVM.framework/Versions/Current/

En ML es MacOSX10.8.sdk . Al menos en mi sistema. 🙂

Para mi, en Mountain Lion

 self.javaHome = '/System/Library/Frameworks/JavaVM.framework/' 

trabajó.

 $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) 

Yo hice lo mismo, pero eligiendo

 self.javaHome = '/Developer/SDKs/**MacOSX10.6.sdk**/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/' 

en lugar

 self.javaHome = '/Developer/SDKs/**MacOSX10.7.sdk**/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/' 

Date cuenta que uso la versión 6 vs 7 . Con la versión 7 obtuve los mismos errores que al principio.

Para que la respuesta de Will sea un poco más específica: tuve que modificar el método setupInclusion (self) agregando la ruta del directorio que sugirió, es decir, ‘/System/Library/Frameworks/JavaVM.framework/Headers’ en Mountain Lion (versión 1.6 de Java) ). Con eso la instalación de JPype tuvo éxito (aunque dio un montón de advertencias …)

Esto es lo que funcionó para mí: te recomiendo que pongas la primera línea en tu perfil.

export JAVA_HOME = $ (/ usr / libexec / java_home) cd $ JAVA_HOME sudo ln -s include Headers sudo cp include / darwin / * include / cd –

Tenga en cuenta que en lugar de cambiar setup.py, estoy cambiando mi instalación de JDK. Esto tiene la ventaja de solucionar el problema para otros proyectos.

Para aquellos que intentaron instalar en Mountain Lion, tuve que editar el archivo setup.py para incluir los archivos de encabezado aquí:

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