Python AttributeError: ‘module’ object heeft geen attribuut ‘SSL_ST_INIT’

Een Python-script van mij werkt niet met:

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'

Antwoord 1, Autoriteit 100%

Upgrading pyopensslMet PIP werkte niet als geen van de opdrachten met betrekking tot pipwerkte voor mij. Door het upgraden van pyopensslmet easy_installkan boven het probleem worden opgelost.

sudo python -m easy_install --upgrade pyOpenSSL

Credit @Delimiter (Antwoord )


Antwoord 2, Autoriteit 50%

bleek het probleem bij mijn installatie van pyopensl, pyopensl-0,15.1.

Ik deed:

pip uninstall pyopenssl

en dan

pip install pyopenssl

… en mijn Python-script werkte weer!


Antwoord 3, Autoriteit 10%

Update uw pyopensslmodule:

$ sudo pip install -U pyopenssl

Antwoord 4, Autoriteit 10%

Ik had een vergelijkbare fout:

   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'

En geen van de andere antwoorden kan het oplossen, omdat PIP niets kon installeren. In plaats daarvan was wat ik deed dit eerst van de terminal:

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

Vervolgens pyopenssl opnieuw geïnstalleerd met pip:

sudo pip install pyopenssl

en alles was jus.


Antwoord 5, autoriteit 7%

Probeer het met de volgende commando’s:

easy_install -U pip
easy_install -U pyOpenSSL

Antwoord 6, autoriteit 6%

Ik heb onlangs hetzelfde probleem ondervonden en na een paar uur onderzoek kwam ik erachter dat het werd veroorzaakt door de nieuwe cryptografie 2.0-upgrade. Deze upgrade zal veel pakketten breken die pyopenssl gebruiken (zoals Sentry, Google Analytics en etc). Gewoon downgraden naar 1.9 zal het probleem oplossen.

Wees voorzichtig als u “pip install -U” gebruikt, het zal automatisch pakketten upgraden die niet worden vermeld in requirements.txt.


Antwoord 7, autoriteit 3%

In mijn geval was het probleem dat het pakket was geïnstalleerd in root-mappen, en ik voerde het script uit dat om pyopensslvroeg met mijn Linux-gebruiker forva’s. En die gebruiker kan de bibliotheken die in root zijn geïnstalleerd niet gebruiken.

Dus eerst moest ik het pakket verwijderen met aptitudeof apt-get.

sudo aptitude purge python-openssl

Daarom moest ik het pakket opnieuw installeren, maar rekening houdend met de gebruiker die het script uitvoert dat om de bibliotheek vraagt. Kijk waar de bibliotheek is geïnstalleerd, afhankelijk van de Linux-gebruiker en het argument --uservan pip.

Geval 1

forvas@server:$ pip install pyopenssl

kon pakketten niet installeren vanwege een milieurror:

[errno 13] Toestemming geweigerd: ‘/usr/local/lib/python2.7/dist-packages/Oopensl’

Overweeg de --useroptie gebruiken of de machtigingen controleren.

Case 2

forvas@server:$ sudo pip install pyopenssl

/USR/LOCAL/LIB/PYTHON2.7/DIST-PACKAGES/OPENSSL / *

/USR/LOCAL/LIB/PYTHON2.7/DIST-PACKAGES/PYOPENSSL-17.5.0.DIST-INFO / *

Case 3

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

/home/forvas/.Local/lib/python2.7/site-packages/opensl / *

/home/forvas/.Local/lib/python2.7/site-packages/pyopenssl-17.5.0.dist-info / *

Case 4

root@server:$ pip install pyopenssl

/USR/LOCAL/LIB/PYTHON2.7/DIST-PACKAGES/OPENSSL / *

/USR/LOCAL/LIB/PYTHON2.7/DIST-PACKAGES/PYOPENSSL-17.5.0.DIST-INFO / *

Case 5

root@server:$ pip install --user pyopenssl

/ROOT/.Local/LIB/PYTHON2.7/SITE-PACKAGES/OPENSSL / *

/root/.Local/lib/python2.7/site-packages/pyopenssl-17.5.0.dist-info / *

conclusie

Mijn probleem was dat de bibliotheek is geïnstalleerd in de mappen van de zaak 5 .

oplossing

  • Het verwijderen van de verpakking.

  • Als ik het uitvoeren van het script met Linux gebruiker forvas , was ik in staat om het pakket terecht opnieuw te installeren met de opties 2 of 4 (waarin de bibliotheek is beschikbaar voor alle Linux-gebruikers) of nauwkeuriger, de optie 3 (in welke bibliotheek is alleen beschikbaar voor Linux gebruiker forvas ).


Antwoord 8, Autoriteit 3%

Ik had het zelfde probleem en als pip niet meer werkte moest ik zijn werk handmatig te doen:

wget https://files.pythonhosted.org/packages/40/d0/8efd61531f338a89b4efa48fcf1972d870d2b67a7aea9dcf70783c8464dc/pyOpenSSL-19.0.0.tar.gz
tar -xzvf pyOpenSSL-19.0.0.tar.gz
cd pyOpenSSL-19.0.0
sudo python setup.py install

Na dat alles werkte zoals verwacht.


Antwoord 9, Autoriteit 2%

Mijn probleem werd veroorzaakt door de versie van Python OpenSSL dat was in /usr/lib/python2.7/dist-packages/.

dpkg -l | grep opensslbleek:

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

Ik verwijderde het met sudo apt-get remove python-openssl. Vervolgens liep ik het volgende om de verdeling versie van pip installeren.

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

pip --versionnu weergegeven:

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

Ik was toen in staat om de benodigde pip-installatie uit te voeren die ik probeerde te voltooien.


Antwoord 10, autoriteit 2%

Dit werkte voor mij:

sudo apt remove python-openssl

Antwoord 11

Ik zag de AttributeError: 'module' object has no attribute 'SSL_ST_INIT'fout.

Doen

sudo pip install pyOpenSSL==16.2.0

heeft het voor mij opgelost.


Antwoord 12

Voor het geval iemand anders niet precies de juiste bezweringen vindt om dit te laten werken, vanaf november 2018 werkte het volgende voor mij:


sudo rm -rf /usr/local/lib/python2.7/dist-packages/OpenSSL/
sudo apt install --reinstall python-openssl

Veel succes!


Antwoord 13

Ik had dit probleem op MacOS met python 2 en 3 geïnstalleerd via brew. Het blijkt dat brew uninstalling python en python@2 geen bibliotheken verwijdert die voor die versies van python zijn geïnstalleerd; d.w.z. in:

/usr/local/lib/python3.7/site-packages/
en
/usr/local/lib/python2.7/site-packages/

Er klopte iets niet, dus wat voor mij werkte, was om alle geïnstalleerde bibliotheken voor brew’s python 2 en 3 te verwijderen/verplaatsen en opnieuw te beginnen (en zorg ervoor dat je vanaf nu alleen virtualenvs gebruikt):

brew uninstall --ignore-dependencies python@2
brew uninstall --ignore-dependencies python
sudo mv /usr/local/lib/python3.7 ~/python3.7libs-backup
sudo mv /usr/local/lib/python2.7 ~/python2.7libs-backup
brew install python
brew install python@2

Antwoord 14

In mijn geval gaf het dezelfde fout voor het verwijderen en upgraden. Ik kon niet verwijderen of upgraden.

AttributeError: 'module' object has no attribute 'SSL_ST_INIT'

Het volgende werkte voor mij.

# 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

WAARSCHUWING: probeer dit alleen als upgraden (sudo pip install pyOpenSSL==16.2.0) of verwijderen (pip uninstall pyopenssl) niet werkt niet helpen


Antwoord 15

Ik had hetzelfde probleem op Ubuntu 16.04, maar met de volgende wending: toen virtualenv werd geactiveerd (. venv/bin/activatevoordat ik bleekselderijwerkers met pysolr, verzoeken, enz. In mijn geval uitvoerde) – alles werkte perfect, maar toen ik bleekselderij vanaf de opdrachtregel uitvoerde met volledige paden en python-paden – was er een probleem (en hetzelfde probleem liep vanaf supervisord ). Ook, indien belangrijk, is virtualenv elders op de machine gebundeld met dezelfde Ubuntu-versie.

De oplossing was simpel: /full/path/to/venv/bintoevoegen aan PATH (zoals hier geadviseerd https://serverfault.com/questions/331027/supervisord-how-to-append-to-path) heeft dit opgelost.

Helaas heb ik nog niet vastgesteld wat voor soort update dit heeft veroorzaakt, maar hopelijk kan iemand hier iets aan hebben.


Antwoord 16

Ik kwam dit net tegen op mijn Ubuntu 16.04-host. Er lijkt een versieconflict te zijn tussen de apt repo-pakketten voor python-openssl en python-crypotgraphy, versus wat iemand handmatig met pip in /usr/local/python2.7/dist-packages heeft geïnstalleerd.

Als het eenmaal in deze staat was, kon de standaard-pip van het systeem ook niet worden uitgevoerd. Ik heb het kip-en-ei-probleem omzeild door handmatig een PYTHONPATH-omgevingsvariabele in te stellen die het /usr/local-gedeelte van de boom als volgt uitsloot:

   $ export PYTHONPATH="/usr/lib/python2.7:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/gtk-2.0"
    $ /usr/bin/pip uninstall cryptography
    $ unset PYTHONPATH

Ik heb de bovenstaande lijst met bibliotheekmappen verkregen om te gebruiken met de python-shell:

   import sys
    for p in sys.path:
       print(p)

en dan alles kopiëren behalve de ene /usr/local directory. Uw systeem heeft mogelijk een andere lijst in zijn pad. Pas dienovereenkomstig aan.

Ik had ook enkele handmatige apt-get install --reinstall python-openssl python-cryptographycommando’s verspreid in mijn bash-geschiedenis, die al dan niet nodig waren.


Antwoord 17

Mijn oplossing was een stuk eenvoudiger omdat deze andere oplossingen niet voor mij werkten. Alles wat ik probeerde te installeren/de-installeren via pip leverde dezelfde fout en stacktrace op.

Uiteindelijk probeerde ik pip te updaten via pip3 en het werkte perfect:

pip3 install --upgrade pip

Ik ging terug naar het gebruik van PIP en alles werkte correct. Ik merkte dat het door Python 3.6 verwijst bij het uitvoeren van de PIP-opdrachten.

# pip install pyopenssl`enter code here`
Requirement already satisfied: pyopenssl in /usr/lib64/python3.6/site-packages (18.0.0)
<snipped>
Requirement already satisfied: pycparser in /usr/lib64/python3.6/site-packages (from cffi!=1.11.3,>=1.7->cryptography>=2.2.1->pyopenssl) (2.19)

Antwoord 18

Probeer met:

export PYTHONPATH="/usr/lib/python2.7:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/gtk-2.0"
sudo apt-get install --reinstall python-openssl

Antwoord 19

Ik zag vergelijkbaar python stapel dump op de console van mijn ubuntu 16.04 vm toen ik SSH in de VM probeerde.

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

pipMeldd dat pyopensslniet is geïnstalleerd.

Ik moest dit doen in plaats daarvan:

sudo apt install --reinstall python-openssl

Antwoord 20

Dit is een ouder bericht, dus ik antwoord om hopelijk eind 2019 iemand te helpen… mijn probleem had te maken met Python 2 vs 3. Ik gebruik uitsluitend Python 3; geen legacy Python meer. Maar mijn besturingssysteem (bijv. Ubuntu 16.04) heeft nog steeds Python 2.7 geïnstalleerd. Dus toen ik standaard globale pipuitvoerde (bijvoorbeeld niet in een virtualenv), riep ik de Python 2-versie van pipaan.

Voor mij heb ik het volgende gebruikt om dit probleem op te lossen.

Verwijder docker-compose:

sudo pip3 uninstall docker-compose  
sudo pip uninstall docker-compose

Installeer docker-composeopnieuw voor mijn versie van Python:

sudo pip3 install docker-compose

Antwoord 21

Ik gebruik OSX 10.15.5 Catalina en gebruik pyenv.

Na een aantal andere oplossingen op deze pagina te hebben geprobeerd, werkte het volgende voor mij:

pyenv uninstall 3.6.8
pyenv install 3.6.8

Ik moet toegeven dat ik niet zeker weet waarom dit dit probleem heeft opgelost, omdat ik deze versie van Python pas vrij recent had geïnstalleerd.

Other episodes