2013-02-17 24 views
7

Người thông minh,Làm thế nào để có được urllib3 và yêu cầu làm việc với jython 2,7 beta 1?

Tôi muốn sử dụng mô-đun yêu cầu tuyệt vời trong chương trình jython của mình. Nó cài đặt và chạy tốt trong python nhưng tôi không thể cài đặt nó trong jython. Tôi đã thử cả hai Jython 2.7a2 và 2.7b1 trên mac và ubuntu và nhận được các lỗi tương tự liên quan đến urllib3.

Đầu tiên cài đặt ez_setup.py như đã đề cập trong How can I use jython setup.py install?

Sau đó chạy easy_install từ bên trong Jython kết quả thư mục bin trong ngoại lệ:

NameError: name 'CERT_NONE' is not defined 
gautam-mbp:bin gautam$ ./easy_install requests 
Searching for requests 
Reading http://pypi.python.org/simple/requests/ 
Reading http://python-requests.org 
Reading https://github.com/kennethreitz/requests 
Best match: requests 1.1.0 
Downloading http://pypi.python.org/packages/source/r/requests/requests-1.1.0.tar.gz#md5=a0158815af244c32041a3147ee09abf3 
Processing requests-1.1.0.tar.gz 
Running requests-1.1.0/setup.py -q bdist_egg --dist-dir /var/folders/jf/cb2pc45s7d94hd6sndysvyxw0000gn/T/easy_install-MnOao_/requests-1.1.0/egg-dist-tmp-E2Rkg1 
Traceback (most recent call last): 
    File "./easy_install", line 7, in <module> 
    sys.exit(
    File "/Users/gautam/jython27b1/Lib/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 1712, in main 
    File "/Users/gautam/jython27b1/Lib/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 1700, in with_ei_usage 
    File "/Users/gautam/jython27b1/Lib/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 1712, in <lambda> 
-----------lots of stack trace--------------- 
    File "setup.py", line 6, in <module> 
    File "/var/folders/jf/cb2pc45s7d94hd6sndysvyxw0000gn/T/easy_install-MnOao_/requests-1.1.0/requests/__init__.py", line 52, in <module> 
    File "/var/folders/jf/cb2pc45s7d94hd6sndysvyxw0000gn/T/easy_install-MnOao_/requests-1.1.0/requests/utils.py", line 23, in <module> 
    File "/var/folders/jf/cb2pc45s7d94hd6sndysvyxw0000gn/T/easy_install-MnOao_/requests-1.1.0/requests/compat.py", line 7, in <module> 
    File "/var/folders/jf/cb2pc45s7d94hd6sndysvyxw0000gn/T/easy_install-MnOao_/requests-1.1.0/requests/packages/__init__.py", line 3, in <module> 
    File "/var/folders/jf/cb2pc45s7d94hd6sndysvyxw0000gn/T/easy_install-MnOao_/requests-1.1.0/requests/packages/urllib3/__init__.py", line 16, in <module> 
    File "/var/folders/jf/cb2pc45s7d94hd6sndysvyxw0000gn/T/easy_install-MnOao_/requests-1.1.0/requests/packages/urllib3/connectionpool.py", line 45, in <module> 
    File "/var/folders/jf/cb2pc45s7d94hd6sndysvyxw0000gn/T/easy_install-MnOao_/requests-1.1.0/requests/packages/urllib3/util.py", line 293, in <module> 
NameError: name 'CERT_NONE' is not defined 

Hình như vấn đề liên quan đến urllib3 không làm việc với Jython. Đánh giá cao sự giúp đỡ trong việc yêu cầu (và urllib3) để làm việc trên jython. Lỗi tương tự cũng xuất hiện trên ubuntu.

Cảm ơn Gautam

+0

Đây là lỗi. :(Chỉ cần nộp nó, bạn có thể theo dõi nó ở đây: https://github.com/shazow/urllib3/issues/150 Sẽ cố gắng sửa chữa nó sớm.Xin lỗi cho sự bất tiện này – shazow

+0

Cảm ơn bạn Gautam –

Trả lời

7

Sửa: tính đến tháng năm 2015, phiên bản ổn định hiện tại của requests, 2.7.0, không còn bị lỗi ban đầu trong Jython --Aprillion


Lỗi bạn khuôn mặt đã được khắc phục một thời gian trước đây trong các phiên bản phát triển của urllib3requests.

Vì bạn sẽ không thể cài đặt nó vì nó sẽ thổi phồng pip/easy_install với java.lang.RuntimeException: java.lang.RuntimeException: Class file too large! bạn phải chạy trực tiếp từ cây nguồn.

Ở đó bạn có thể sửa chữa các lỗi nhập khẩu bằng cách thay thế tất cả những thứ ssl_wrap_socket vào cuối requests/packages/urllib3/util.py với một phương pháp giả như:

def ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None, 
        ca_certs=None, server_hostname=None, 
        ssl_version=None): 
    raise Error('This is not meant to be called') 

(Nếu hỗ trợ ssl là một mối quan tâm cho bạn: nó bị phá vỡ tại thời điểm anyways)

Vì jython là missing hỗ trợ cho idna, bạn cũng phải xóa mục này. Đi tới dòng 290 của request/models.py và thay thế 'idna' theo 'utf-8 '.

Vì vậy, nếu bạn không cần sử dụng ssl hoặc idna thì các bước đó sẽ hoạt động.

followup: Các ssl lỗi có liên quan trong Jython được theo dõi ở đây: http://bugs.jython.org/issue2016

+0

Sẽ dùng thử ngay hôm nay - Bạn có thể gửi cho tôi một số thông tin về cách cài đặt các phiên bản dev của urllib3 và các yêu cầu không? –

+0

Bạn không cần phiên bản dev. /packages/source/r/requests/requests-1.1.0.tar.gz#md5=a0158815af244c32041a3147ee09abf3), giải nén và sau đó sửa đổi các tập tin util.py và các mô hình, py như được giải thích trong câu trả lời Sau đó, hãy thử sử dụng nó với một trình thông dịch jython bắt đầu trong thư mục của các yêu cầu chưa được giải nén. Nếu bạn muốn sử dụng nó từ một số nơi khác, bạn phải điều chỉnh con đường pythons này, có tài liệu cho điều đó. –

+0

Nó hoạt động! Cảm ơn bạn, điều này thật tuyệt vời. –

1

Vấn đề này đã được giải quyết - vui lòng sử dụng Jython 2.7 beta 4 (hoặc phiên bản chính thức).

+0

khi nào sẽ phát hành 2,7 b3? Tôi chưa thấy nó từ đây http://www.jython.org/downloads.html – brianray

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