복붙노트

[PYTHON] Python AttributeError : 'module'객체에 'SSL_ST_INIT'속성이 없습니다.

PYTHON

Python AttributeError : 'module'객체에 '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'

해결법

  1. ==============================

    1.문제는 pyOpenSSL, pyOpenSSL-0.15.1을 설치 한 것이 었습니다.

    문제는 pyOpenSSL, pyOpenSSL-0.15.1을 설치 한 것이 었습니다.

    내가 그랬어 :

    pip uninstall pyopenssl
    

    그리고

    pip install pyopenssl
    

    ... 그리고 파이썬 스크립트가 다시 작동했습니다!

  2. ==============================

    2.파이와 관련된 명령 중 아무 것도 나를 위해 일하지 않았기 때문에 pip와 함께 pyopenssl을 업그레이드하는 것이 효과가 없었습니다. easy_install으로 pyopenssl을 업그레이드하면 위의 문제를 해결할 수 있습니다.

    파이와 관련된 명령 중 아무 것도 나를 위해 일하지 않았기 때문에 pip와 함께 pyopenssl을 업그레이드하는 것이 효과가 없었습니다. easy_install으로 pyopenssl을 업그레이드하면 위의 문제를 해결할 수 있습니다.

    sudo python -m easy_install --upgrade pyOpenSSL
    

    신용 @ 델리 미터 (답)

  3. ==============================

    3.pyopenssl 모듈을 업데이트하십시오 :

    pyopenssl 모듈을 업데이트하십시오 :

    $ sudo pip install -U pyopenssl
    
  4. ==============================

    4.최근에 같은 문제가 발생했으며 몇 시간 동안 조사한 결과 새 암호화 2.0 업그레이드로 인한 것으로 나타났습니다. 이 업그레이드는 pyopenssl (Sentry, Google Analytics 등)을 사용하여 많은 패키지를 손상시킵니다. 1.9로 다운 그레이드하면 문제가 해결됩니다.

    최근에 같은 문제가 발생했으며 몇 시간 동안 조사한 결과 새 암호화 2.0 업그레이드로 인한 것으로 나타났습니다. 이 업그레이드는 pyopenssl (Sentry, Google Analytics 등)을 사용하여 많은 패키지를 손상시킵니다. 1.9로 다운 그레이드하면 문제가 해결됩니다.

    "pip install -U"를 사용하는 경우 requirements.txt에없는 패키지는 자동으로 업그레이드됩니다.

  5. ==============================

    5.필자의 경우 문제는 패키지가 루트 디렉토리에 설치되어 있고 Linux 사용자 forvas와 함께 pyopenssl을 요청한 스크립트를 실행하고 있었다는 것입니다. 그리고 그 사용자는 루트에 설치된 라이브러리를 사용할 수 없습니다.

    필자의 경우 문제는 패키지가 루트 디렉토리에 설치되어 있고 Linux 사용자 forvas와 함께 pyopenssl을 요청한 스크립트를 실행하고 있었다는 것입니다. 그리고 그 사용자는 루트에 설치된 라이브러리를 사용할 수 없습니다.

    그래서 먼저 적성이나 apt-get로 패키지를 제거해야했습니다.

    sudo aptitude purge python-openssl
    

    따라서 패키지를 다시 설치해야하지만 라이브러리를 요청하는 스크립트를 실행하는 사용자를 고려해야합니다. Linux 사용자 및 pip - argument의 인수에 따라 라이브러리가 설치된 위치를 살펴보십시오.

    사례 1

    forvas@server:$ pip install pyopenssl
    

    사례 2

    forvas@server:$ sudo pip install pyopenssl
    

    사례 3

    forvas@server:$ sudo pip install --user pyopenssl
    

    사례 4

    root@server:$ pip install pyopenssl
    

    사례 5

    root@server:$ pip install --user pyopenssl
    

    결론

    내 문제는 라이브러리가 케이스 5의 디렉토리에 설치되었다는 것입니다.

    해결책

  6. ==============================

    6.나는 VM에 ssh를 시도했을 때 우분투 16.04 VM의 콘솔에서 비슷한 파이썬 스택 덤프를보고있었습니다.

    나는 VM에 ssh를 시도했을 때 우분투 16.04 VM의 콘솔에서 비슷한 파이썬 스택 덤프를보고있었습니다.

        SSL_ST_INIT = _lib.SSL_ST_INIT
    AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
    

    Pip은 pyopenssl이 설치되지 않았다고보고했습니다.

    대신이 작업을 수행해야했습니다.

    $ apt install --reinstall python-openssl
    
  7. ==============================

    7.나는 이것을 도왔다 :

    나는 이것을 도왔다 :

    $ easy_install -U pip $ easy_install -U pyOpenSSL

  8. ==============================

    8.나는 우분투 16.04에서 같은 문제를 가지고 있었지만 다음과 같은 문제가 있었다 : virtualenv가 활성화되었을 때 (필자의 경우 셀 룰리 노동자를 실행하기 전에 venv / bin / activate를 실행했다.) - 모든 것이 완벽하게 작동했지만 샐러리를 실행했을 때 전체 경로 및 파이썬 경로를 사용하는 명령 줄에서 - 문제가있었습니다 (그리고 감독자가 실행하는 동일한 문제). 또한 중요한 경우 virtualenv는 동일한 우분투 버전으로 컴퓨터의 다른 곳에 번들되었습니다.

    나는 우분투 16.04에서 같은 문제를 가지고 있었지만 다음과 같은 문제가 있었다 : virtualenv가 활성화되었을 때 (필자의 경우 셀 룰리 노동자를 실행하기 전에 venv / bin / activate를 실행했다.) - 모든 것이 완벽하게 작동했지만 샐러리를 실행했을 때 전체 경로 및 파이썬 경로를 사용하는 명령 줄에서 - 문제가있었습니다 (그리고 감독자가 실행하는 동일한 문제). 또한 중요한 경우 virtualenv는 동일한 우분투 버전으로 컴퓨터의 다른 곳에 번들되었습니다.

    해결책은 간단했습니다 : PATH에 / full / path / to / venv / bin을 추가하면 (https://serverfault.com/questions/331027/supervisord-how-to-append-to-path 여기에 알려짐)이 문제가 해결되었습니다.

    불행히도, 나는 아직 어떤 종류의 업데이트가이 문제를 일으켰는지 정확히 지적하지는 않았지만 희망적으로 이는 누군가를 도울 수 있습니다.

  9. ==============================

    9.AttributeError : 'module'객체에 'SSL_ST_INIT'오류도 없습니다.

    AttributeError : 'module'객체에 'SSL_ST_INIT'오류도 없습니다.

    하기

    sudo pip install pyOpenSSL == 16.2.0

    나를 위해 그것을 해결했습니다.

  10. ==============================

    10.내 경우, 그것은 제거 및 업그레이 드에 대해 동일한 오류를 던지고있었습니다. 제거하거나 업그레이드 할 수 없습니다.

    내 경우, 그것은 제거 및 업그레이 드에 대해 동일한 오류를 던지고있었습니다. 제거하거나 업그레이드 할 수 없습니다.

    AttributeError : '모듈'객체에 'SSL_ST_INIT'속성이 없습니다.

    다음은 나를 위해 일했다.

    # rm -rf /usr/lib/python2.7/site-packages/OpenSSL/
    # rm -rf /usr/lib/python2.7/site-packages/pyOpenSSL-16.1.0.dist-info
    # rm -rf /usr/lib/python2.7/site-packages/pyOpenSSL-18.0.0-py2.7.egg
    # pip2.7 install pyopenssl
    Collecting pyopenssl
    Downloading 
    .
    .
    100% |████████████████████████████████| 61kB 5.8MB/s 
    Collecting cryptography>=2.2.1 (from pyopenssl)
    .
    .
    Installing collected packages: cryptography, pyopenssl
    Found existing installation: cryptography 1.7.2
    Uninstalling cryptography-1.7.2:
      Successfully uninstalled cryptography-1.7.2
    Successfully installed cryptography-2.2.2 pyopenssl-18.0.0
    

    경고 : 업그레이드 (sudo pip 설치 pyOpenSSL == 16.2.0) 또는 제거 (pip uninstall pyopenssl)가 도움이되지 않는 경우에만 시도하십시오

  11. ==============================

    11.내 문제는 /usr/lib/python2.7/dist-packages/에있는 Python openssl 버전 때문입니다.

    내 문제는 /usr/lib/python2.7/dist-packages/에있는 Python openssl 버전 때문입니다.

    dpkg -l | grep openssl은 다음과 같이 나타 냈습니다.

    ii  python-openssl                                0.15.1-2build1                               all          Python 2 wrapper around the OpenSSL library
    

    sudo apt-get python-openssl을 사용하여 제거했습니다. 나는 pip 버전의 배포본을 설치하기 위해 다음을 실행했다.

    curl -o ./get-pip.py https://bootstrap.pypa.io/get-pip.py
    sudo python2 ./get-pip.py
    

    pip --version이 이제 표시됩니다.

    pip 18.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
    

    나는 필자가 완료하려고했던 필 pip를 수행 할 수 있었다.

  12. ==============================

    12.비슷한 오류가 발생했습니다.

    비슷한 오류가 발생했습니다.

        from OpenSSL import rand, crypto, SSL
      File "/usr/local/lib/python3.5/dist-packages/OpenSSL/SSL.py", line 112, in <module>
        SSL_ST_INIT = _lib.SSL_ST_INIT
    AttributeError: module 'lib' has no attribute 'SSL_ST_INIT'
    

    pip가 아무 것도 설치할 수 없기 때문에 다른 답변들 중 아무 것도 그것을 고칠 수는 없습니다. 대신, 나는 터미널에서부터 이렇게했습니다.

    sudo rm -r /usr/local/lib/python3.5/dist-packages/OpenSSL
    

    그런 다음 pip와 함께 pyopenssl을 다시 설치하십시오.

    sudo pip install pyopenssl
    

    모든 것은 육즙이었다.

  13. from https://stackoverflow.com/questions/43267157/python-attributeerror-module-object-has-no-attribute-ssl-st-init by cc-by-sa and MIT license