2011-12-15 39 views
7

Tôi đang cố gắng sử dụng Neo4j cho một dự án, và muốn giao tiếp với nó thông qua Python kể từ khi tôi là một newbie để lập trình và không biết bất kỳ Java. Tôi đang theo dõi installation instructions, nhưng tôi bị kẹt trên bước đầu tiên, đó là cài đặt JPype.Làm thế nào để cài đặt JPype trên OS X Lion để sử dụng với Neo4j?

Tôi đang sử dụng OS X 10.7 (sư tử). Tôi nghĩ rằng cấu hình của tôi là khá chuẩn với Python 2.7.2 được tải xuống từ trang web Python và Java 1.6.0 được tải xuống từ trang web của Apple.

Khi tôi chạy

% sudo python setup.py install 

Trên cài đặt JPype, tôi nhận được khoảng 100 dòng mã lỗi về file .h khác nhau, sau đó nó chấm dứt với các dòng:

lipo: can't figure out the architecture type of: /var/tmp// 
ccwOzLi9.out 

error: command 'gcc-4.2' failed with exit status 1 

tôi tìm thấy một số blog post about a gcc error with JPype, nhưng tôi đã làm theo hướng dẫn ở đó để không có kết quả. Tôi cũng gửi email cho tác giả của bài đăng đó và anh ấy nói với tôi chưa bao giờ thực sự sử dụng JPype, đã làm việc trong OS X 10.6 và không có bất kỳ thông tin chi tiết nào. Tôi cũng gửi email cho tác giả của JPype, người đã nói với tôi rằng anh ấy chỉ sử dụng Windows và không biết cách cài đặt trên OS X. Nhưng nếu chúng tôi có thể giải quyết vấn đề này, tôi có thể chỉ cho anh ấy câu trả lời và có lẽ anh ta có thể thêm giải pháp vào tài liệu JPype và giúp đỡ nhiều người khác!

Vì vậy, bất kỳ ai biết tôi đang làm gì sai? Tôi muốn sử dụng Neo4j, nhưng tôi không biết Java vì vậy tôi đang ở một mất mát hoàn toàn để làm thế nào để sửa chữa một lỗi biên dịch .

Dựa trên đọc mọi kết quả có sẵn của Google, tôi hai chạy lý thuyết là rằng:

  1. tôi bằng cách nào đó sử dụng một phiên bản 32-bit của Python hay Java (mặc dù tôi sử dụng cài đặt chính thức tiêu chuẩn và không thể tìm ra cách để chuyển sang 64 bit hoặc nếu điều đó có thể xảy ra)

  2. Tệp JPype chỉ có thể được biên dịch bằng GCC 4.0 thay vì 4.2. Nhưng tôi không thể tìm thấy bất cứ điều gì trực tuyến về cách quay trở lại GCC 4.0 (hoặc nếu nó đi kèm với MacBook năm 2011 và có một số cách để buộc JPype để biên dịch với điều đó thay thế).

another similar question, nhưng giải pháp có sử dụng bộ điều hợp khác đi qua REST thay vì trực tiếp vào Java. Tôi sẽ thử rằng nếu tôi phải, nhưng tôi thực sự sẽ sử dụng phương pháp Neo4j được đề xuất nếu có thể.

+0

+1 để tự mình giải quyết vấn đề trước. – edwardw

+0

Tôi đã tạo [một ngã ba trên github] (https://github.com/originell/jpype) với một số thay đổi được đề xuất được đề cập trong chủ đề này. –

Trả lời

11

Tôi không phải là một chàng trai Python, nhưng cố gắng cài đặt JPype trên máy tính của tôi:

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

Ngày OSX Lion, JDK mới nhất dường như được đặt ở đây:

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

Một chút googling đã bật bài đăng này: http://blog.y3xz.com/post/5037243230/installing-jpype-on-mac-os-x

Tôi đã làm theo các hướng dẫn để sửa đổi setup.py, sau đó chạy sudo python setup.py install mà không gặp vấn đề gì.

Điều đó có hữu ích không?

+2

Woo! Điều đó giải quyết nó. Tôi đã theo dõi bài đăng trên blog mà bạn trích dẫn, nhưng tôi đã sử dụng '/ System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home' làm java_home của tôi, đó là những gì tôi nhận được khi chạy'%/usr/libexec/java_home' (một bài đăng trên blog khác yêu cầu tôi thực hiện). Tôi sẽ gửi email cho anh chàng JPype và yêu cầu anh ta thêm tài liệu này vào tài liệu. – rogueleaderr

+0

Trong setup.py, bạn cần thêm 'self.jdkInclude =" darwin "' và 'self.javaHome = '/ Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Nội dung/Home''. Sau đó chạy 'python setup.py install --user' – Sandeep

1

tôi đã làm như vậy, nhưng việc lựa chọn

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

thay

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

nhận ra rằng tôi sử dụng phiên bản 6 vs 7. Với phiên bản 7, tôi nhận được cùng một lỗi mà bắt đầu.

+0

Vâng, đó là một điểm tốt. Tôi nên đã đề cập đến phiên bản hệ điều hành, và đã chỉnh sửa câu trả lời của tôi để phản ánh điều đó. Đường dẫn chính xác sẽ khác với phiên bản MacOSX cụ thể của bạn và cài đặt JDK. – akollegger

4

Đối với tôi,

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

làm việc.

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

YESSSSSSSSSSSSSSSSSSSS –

1

Đối với tôi, trên Mountain Lion

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

làm việc.

$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

Trên Lion của tôi, thư mục "include" trong JDK đã biến mất, vì vậy JPype không thể tìm thấy jni.h.

tôi cập nhật setup.py ở hai nơi, một để thiết lập nơi để tìm các thư viện 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)] 

Và một để thiết lập nơi để tìm jni.h:

def setupInclusion(self): 
    self.includeDirs = [ 
     self.javaHome+"/Headers", 
     <other stuff> 
+2

Điều này cũng làm việc cho tôi trên Mountain Lion. – orluke

+0

Bạn đá, người đàn ông !! – KeatsKelleher

-1

Đối với những người cố gắng để cài đặt trên Mountain Lion, tôi phải chỉnh sửa thêm tệp setup.py để bao gồm các tệp tiêu đề tại đây:

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

+0

Cảm ơn bạn đã thêm thông tin này, nhưng vì đây không phải là câu trả lời trực tiếp nên nó sẽ thích hợp hơn làm nhận xét –

2

Đối với tất cả những người vẫn đang cố gắng để cài đặt Jpype nhưng đã được cập nhật trong khi đó Mac OS: Câu trả lời Andreas Kolleger của chỉ hoạt động tốt, nhưng với XCode 4.3 con đường thay đổi để /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/JavaVM.framework/Versions/Current/

Trong ML nó MacOSX10.8.sdk. Ít nhất là trên hệ thống của tôi. :)

2

Dưới đây là hướng dẫn tôi đặt trong README để cài đặt JPype trên OS X 10.7. Cùng một ý tưởng như các câu trả lời ở đây nhưng khác nhau, đủ để đảm bảo trình.

Giao diện python với java (JPype) cần mods để setup.py: Tóm lại, bạn cần đảm bảo thiết lập JPype.py script có thể thấy Java SDK của bạn "Headers" và "Home" thư mục Tôi đã phải cài đặt Java từ Apple đầu tiên kể từ khi cài đặt OS X mặc định của tôi không đi kèm với Tiêu đề trong đường dẫn cài đặt Java điển hình mà tôi tìm thấy bằng cách thực hiện:

/usr/libexec/java_home 

Nếu bạn xảy ra để có một dir Headers, có thể bạn không cần phải cài đặt Java và có thể thiết lập đường dẫn VAR dưới đây dựa trên thư mục HOME java của bạn mà có thể khác nhau từ những người trong các hướng

Sau khi tôi đã cài đặt Java, tôi tìm thấy bản cài đặt mới trong:

/Library/Java/JavaVirtualMachines/ 

thư mục Home của tôi là:

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

và thư mục Tiêu đề của tôi là:

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

1) Các kịch bản JPype giả định rằng Headers nằm trong thư mục Home nhưng nó không phải, vì vậy tôi đã thay đổi chủ con đường var và tạo ra một var mới nội dung đường dẫn trong kịch bản setup.py - trong 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) trong setupMacOSX(self), thay đổi self.libraryDir:

self.libraryDir = [self.javaContents + "/Libraries"] 
  • Lưu ý rằng bước này đã được đề cập theo yêu cầu nhưng tôi không cần phải làm điều này cho nó hoạt động như vậy có lẽ cố gắng mà không có nó đầu tiên

3) Trong setupInclusion , thêm các đường dẫn đến "Home/include" dir của bạn và "Headers" của bạn dir:

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

4) Chạy quá trình cài đặt bây giờ sẽ làm việc:

sudo python setup.py install 
0

Để làm cho câu trả lời của Will một chút cụ thể hơn: tôi đã phải thay đổi phương pháp setupInclusion (tự) bằng cách thêm đường dẫn thư mục ông đề nghị, tức là, '/System/Library/Frameworks/JavaVM.framework/Headers' trên Mountain Lion (phiên bản java 1.6). Với việc cài đặt của JPype đã thành công (mặc dù đã đưa ra một loạt cảnh báo ...)

0

Đây là những gì phù hợp với tôi - khuyên bạn nên đặt dòng đầu tiên trong tiểu sử của mình.

xuất khẩu JAVA_HOME = $ (/ usr/libexec/JAVA_HOME) cd $ JAVA_HOME sudo ln -s bao gồm Headers sudo cp bao gồm/darwin/* bao gồm/ cd -

Lưu ý rằng thay vì thay đổi thiết lập .py, tôi đang thay đổi cài đặt JDK của mình. Điều này có lợi thế là khắc phục sự cố cho các dự án khác.

Các vấn đề liên quan