2017-04-06 31 views
12

Một Python script của tôi là không có:Python AttributeError: đối tượng 'module' không có thuộc tính 'SSL_ST_INIT'

Traceback (most recent call last): 
    File "./inspect_sheet.py", line 21, in <module> 
    main() 
    File "./inspect_sheet.py", line 12, in main 
    workbook_name=workbook_name, 
    File "./google_sheets.py", line 56, in __init__ 
    self.login() 
    File "./google_sheets.py", line 46, in login 
    self.client = gspread.authorize(credentials) 
    File "/usr/local/lib/python2.7/site-packages/gspread/client.py", line 335, in authorize 
    client.login() 
    File "/usr/local/lib/python2.7/site-packages/gspread/client.py", line 98, in login 
    self.auth.refresh(http) 
    File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 598, in refresh 
    self._refresh(http.request) 
    File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 769, in _refresh 
    self._do_refresh_request(http_request) 
    File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 795, in _do_refresh_request 
    body = self._generate_refresh_request_body() 
    File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 1425, in _generate_refresh_request_body 
    assertion = self._generate_assertion() 
    File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 1554, in _generate_assertion 
    private_key, self.private_key_password), payload) 
    File "/usr/local/lib/python2.7/site-packages/oauth2client/crypt.py", line 162, in from_string 
    from OpenSSL import crypto 
    File "/usr/local/lib/python2.7/site-packages/OpenSSL/__init__.py", line 8, in <module> 
    from OpenSSL import rand, crypto, SSL 
    File "/usr/local/lib/python2.7/site-packages/OpenSSL/SSL.py", line 118, in <module> 
    SSL_ST_INIT = _lib.SSL_ST_INIT 
AttributeError: 'module' object has no attribute 'SSL_ST_INIT' 

Trả lời

28

Hóa ra vấn đề là với cài đặt của tôi về pyOpenSSL, pyOpenSSL-0.15.1.

tôi đã làm:

pip uninstall pyopenssl 

và sau đó

pip install pyopenssl 

... và kịch bản Python của tôi làm việc một lần nữa!

+9

tôi đã gặp sự cố khi chạy 'pip', điều này đã giải quyết được nó' sudo easy_install pyOpenSSL' – chinmay

+0

Chỉ cần nâng cấp mật mã; giải pháp của bạn là đủ trong trường hợp của tôi – denvar

6

Tôi đã gặp phải sự cố tương tự gần đây và sau vài giờ điều tra, tôi phát hiện ra rằng vấn đề này là do nâng cấp mới mã hóa 2.0. Nâng cấp này sẽ phá vỡ nhiều gói bằng cách sử dụng pyopenssl (như Sentry, Google Analytics và vv). Chỉ cần hạ cấp xuống 1.9 sẽ giải quyết được vấn đề.

Hãy thận trọng nếu bạn đang sử dụng "pip install -U", nó sẽ tự động nâng cấp các gói không được liệt kê trong requirements.txt.

+0

Cảm ơn, điều này đã làm việc. Nâng cấp pyopenssl không đủ cho tôi. – r11

9

Cập nhật pyopenssl mô-đun của bạn:

$ sudo pip install -U pyopenssl 
+1

Cảm ơn, tôi thấy hiệu quả hơn là gỡ cài đặt và cài đặt lại. –

+0

nếu bạn sử dụng virtualenv bạn không cần sudo. – Chris

6

Nâng cấp pyopenssl với pip đã không làm việc như không ai trong số các lệnh liên quan đến để pip đang làm việc cho tôi. Bằng cách nâng cấp pyopenssl với easy_install, vấn đề trên có thể được giải quyết.

sudo python -m easy_install --upgrade pyOpenSSL 

@delimiter tín dụng (Answer)

0

tôi đã cùng một vấn đề trên Ubuntu 16.04, nhưng với sự xoắn sau: khi virtualenv đã được kích hoạt (. venv/bin/activate trước khi chạy công nhân cần tây với pysolr, yêu cầu, vv trong tôi trường hợp) - mọi thứ hoạt động hoàn hảo, nhưng khi tôi chạy cần tây từ dòng lệnh bằng cách sử dụng đường dẫn đầy đủ và đường dẫn python - đã xảy ra sự cố (và vấn đề tương tự đang chạy từ người giám sát). Ngoài ra, nếu quan trọng, virtualenv đã được đóng gói ở nơi khác trên máy với cùng một phiên bản Ubuntu.

Giải pháp rất đơn giản: thêm /full/path/to/venv/bin vào PATH (như được giải thích tại đây https://serverfault.com/questions/331027/supervisord-how-to-append-to-path) đã giải quyết vấn đề này.

Thật không may, tôi chưa chỉ định loại cập nhật nào gây ra lỗi này, nhưng hy vọng điều này có thể giúp ai đó.

0

Tôi cũng thấy lỗi AttributeError: 'module' object has no attribute 'SSL_ST_INIT'.

Làm như

sudo pip install pyOpenSSL==16.2.0

giải quyết nó cho tôi.

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