“SSL-module in Python is niet beschikbaar” bij het installeren van pakket met PIP3

Ik installeer Python 3.4 en Python 3.6 op mijn lokale machine met succes, maar kan geen pakketten installeren met pip3.

Wanneer ik pip3 install <package>, ontvang ik de volgende SSL gerelateerd fout:

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting <package>
  Could not fetch URL https://pypi.python.org/simple/<package>/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping
  Could not find a version that satisfies the requirement <package> (from versions: )
No matching distribution found for <package>

Hoe kan ik mijn Python3.x installeren, zodat ik pakketten kan installeren met pip install <package>?


1, Autoriteit 100%

Stap voor stapleiding om Python 3.6 en PIP3 in Ubuntu

te installeren

  1. Installeer de benodigde pakketten voor Python en SSL: $ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

  2. Download en unzip “Python-3.6.8.tar.xz” from https: / /www.python.org/ftp/python/ in uw thuisgids.

  3. Open Terminal in die map en voer: $ ./configure

  4. bouwen en installeren: $ make && sudo make install

  5. Installeer pakketten met: $ pip3 install package_name

Disclaimer . De bovenstaande commando’s zijn niet getest in Ubuntu 20.04 LTS


2, Autoriteit 73%

Als je op Windows en het gebruik anaconda dit werkte voor mij:

Ik heb veel andere oplossingen geprobeerd die niet werkte (milieupad variabele veranderingen …)

Het probleem kan worden veroorzaakt door DLL’s in de map Windows \ System32 (bijvoorbeeld libcrypto-1_1-x64.dll of libssl-1_1-x64.dll of anderen) geplaatst door andere software.

De correctie werd het installeren openSSL uit https://slproweb.com/products/Win32OpenSSL.htmldie de DLL’s vervangt door meer recente versies.


3, Autoriteit 52%

Als u op rode hoed / cento’s bent:

# To allow for building python ssl libs
yum install openssl-devel
# Download the source of *any* python version
cd /usr/src
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
tar xf Python-3.6.2.tar.xz 
cd Python-3.6.2
# Configure the build w/ your installed libraries
./configure
# Install into /usr/local/bin/python3.6, don't overwrite global python bin
make altinstall

4, Autoriteit 34%

Ik had een vergelijkbaar probleem op OSX 10.11 vanwege het installeren van Memcached die Python 3.7 heeft geïnstalleerd bovenop 3.6.

. WAARSCHUWING: pip is geconfigureerd met locaties die TLS / SSL vereisen, maar de ssl module in Python is niet beschikbaar

bestede uren op ontkoppelen van OpenSSL, opnieuw installeren, het veranderen van paden .. en niets hielp. De OpenSSL-versie wijzigen van naar de oudere versie heeft de truc:

brew switch openssl 1.0.2e

Ik heb deze suggestie nergens op internet gezien. Ik hoop dat het iemand dient.


Antwoord 5, autoriteit 22%

Eens met het antwoord van mastaBlasta. Werkte voor mij. Ik kwam hetzelfde probleem tegen als de beschrijving van het onderwerp.

Omgeving: MacOS Sierra. En ik gebruik Homebrew.

Mijn oplossing:

  1. Herinstalleer openssl door brew uninstall openssl; brew install openssl
  2. Volgens de tips van Homebrew, doe het volgende:

    echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
    export LDFLAGS="-L/usr/local/opt/openssl/lib"
    export CPPFLAGS="-I/usr/local/opt/openssl/include"
    

Antwoord 6, autoriteit 16%

In Ubuntu kan dit helpen:

cd Python-3.6.2
./configure --with-ssl
make
sudo make install

Antwoord 7, autoriteit 7%

Als je Windows gebruikt en Anaconda gebruikt, kun je proberen de opdracht “pip install …” uit te voeren in Anaconda Prompt in plaats van cmd.exe, zoals gebruiker willliu1995 suggereert hier. Dit was voor mij de snelste oplossing, waarvoor geen extra componenten hoeven te worden geïnstalleerd.


Antwoord 8, autoriteit 7%

Ik had hetzelfde probleem met de installatie van python3.8.5 op Debian9. Ik heb een build gedaan, maar toen ik probeerde enkele modules te downloaden, gaf pip3.8 de volgende foutmelding:

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

Ik heb gezocht naar de oorzaak van mijn probleem en ontdekte dat er een systeemafhankelijk deel van de python-build is die wordt aangeroepen door een systeemonafhankelijke. In het geval van ontbrekende ssl, hoefde je alleen maar de python-terminal te openen en te controleren of _ssl aanwezig is:

>>> help('modules')
.
.
_sre                enum                pwd                 wave
_ssl                errno               py_compile          weakref
_stat               faulthandler        pyclbr              webbrowser
.
.

Als dit niet het geval is, ontbreekt het onderdeel van uw systeemafhankelijke ssl-module. U kunt het ook controleren door de inhoud van <python_installation_root>/lib/python3.8/lib-dynload:

>ls ./lib/python3.8/lib-dynload | grep ssl
_ssl.cpython-38-x86_64-linux-gnu.so

Het probleem werd veroorzaakt zoals beschreven door PengShaw door ontbrekende libssl-dev tijdens het bouwen. Daarom moet u de aanbevolen installatieprocedure voor python volgen. Installeer eerst de vereisten en bouw en installeer vervolgens de python. Installatie zonder ontwikkelversies van libs resulteerde in mijn geval in het ontbrekende systeemafhankelijke deel. In dit geval _ssl.

Merk op dat de devel lib-naam verschilt voor Debian en CentOS, controleer daarom of de installatiehints die op het net zijn geplaatst, geschikt zijn voor uw specifieke Linux-systeemtype:

For Debian:
sudo apt install -y libbz2-dev libffi-dev libssl-dev
./configure --enable-optimizations
make
make altinstall
For CentOS:
sudo yum -y install bzip2-devel libffi-devel openssl-devel
./configure --enable-optimizations
make
make altinstall

Het is zeker een goed idee om configuratie-opties op te sommen voorafgaand aan de configuratie en evtl. gebruik enkele extra opties:

./configure --help

Last but not least, als u –prefix gebruikt voor een niet-standaard installatielocatie, vergeet dan niet om uw <python_installation_root>/lib toe te voegen aan uw LD_LIBRARY_PATH .


Antwoord 9, autoriteit 6%

Het probleem wordt waarschijnlijk veroorzaakt doordat de bibliotheek ontbreekt.

Voordat u python 3.6 installeert, moet u ervoor zorgen dat u alle bibliotheken installeert die nodig zijn voor python.

$ sudo apt-get install build-essential checkinstall 
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

Meer informatie in Python 3.6.0 installeren op Ubuntu & LinuxMint


Antwoord 10, autoriteit 4%

Het downgraden van openssl werkte voor mij,

brew switch openssl 1.0.2s

Antwoord 11, autoriteit 4%

Als je OSX gebruikt en python hebt gecompileerd vanaf de bron:

Installeer openssl met brew brew install openssl

Volg de instructies die Brew je geeft over het instellen van je CPPFLAGSen LDFLAGS. In mijn geval gebruik ik de brouwformule [email protected]en ik heb deze 3 instellingen nodig om het python-buildproces correct te koppelen aan mijn SSL-bibliotheek:

export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"

Ervan uitgaande dat de bibliotheek op die locatie is geïnstalleerd.


Antwoord 12, autoriteit 4%

Ik kwam hetzelfde probleem tegen op Windows 10. Mijn zeer specifieke probleem is te wijten aan mijn installatie van Anaconda. Ik heb Anaconda geïnstalleerd en onder het pad Path/to/Anaconda3/komt de python.exe. Dus ik heb python helemaal niet geïnstalleerd omdat Anaconda python bevat. Toen ik pip gebruikte om pakketten te installeren, vond ik hetzelfde foutrapport, pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available..

De oplossing was de volgende:

1) je kunt python opnieuw downloaden op de officiële website;

2) Navigeer naar de map waar "Python 3.7 (64-bit).lnk"zich bevindt

3) import sslen exit()

4) typ bijvoorbeeld cmd, "Python 3.7 (64-bit).lnk" -m pip install tensorflow.

Hier, je bent helemaal klaar.


Antwoord 13, autoriteit 4%

Ik heb VEELmanieren geprobeerd om dit probleem op te lossen en geen enkele is opgelost. Ik gebruik momenteel Windows 10.

Het enige dat werkte was:

  • Anaconda verwijderen
  • Python verwijderen (ik gebruikte versie 3.7.3)
  • Installeer Python opnieuw (vergeet niet om de optie om automatisch aan PATH toe te voegen aan te vinken)

Toen heb ik alle bibliotheken gedownload die ik nodig had met PIP… en werkte!

Weet niet waarom, of dat het probleem op de een of andere manier te maken had met Anaconda.


Antwoord 14, autoriteit 3%

voor gebruikers van osx brew

mijn probleem leek gerelateerd aan mijn python-installatie en werd snel opgelost door python3 en pip opnieuw te installeren. ik denk dat het zich begon te misdragen na een OS-update, maar wie weet (op dit moment gebruik ik Mac OS 10.14.6)

brew reinstall python3 --force
# setup pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
# installa pkg successfully 
pip install pandas

Antwoord 15, autoriteit 2%

De ssl-module is een TLS/SSL-wrapper voor toegang tot de Operation Sytem (OS)-socket (Lib/ssl.py). Dus als de ssl-module niet beschikbaar is, is de kans groot dat je ofwel geen OS OpenSSL-bibliotheken hebt geïnstalleerd, of dat die bibliotheken niet werden gevonden toen je Python installeerde. Laten we aannemen dat het een later geval is (ook bekend als: je hebt al OpenSSL geïnstalleerd, maar ze zijn niet correct gekoppeld bij het installeren van Python).

Ik ga er ook vanuit dat je vanaf de bron installeert. Als u installeert vanuit binair (dwz: Window .exe-bestand), of pakket (Mac .dmg of Ubuntu apt), kunt u niet veel doen met het installatieproces.

Tijdens het configureren van uw python-installatie, moet u specificeren waar het OS OpenSSL zal worden gebruikt voor het koppelen:

# python 3.8 beta
./configure --with-openssl="your_OpenSSL root"

Dus waar vind je je geïnstalleerde OpenSSL-directory?

# ubuntu 
locate ssl.h | grep '/openssl/ssl.h'
/home/user/.linuxbrew/Cellar/openssl/1.0.2r/include/openssl/ssl.h
/home/user/envs/py37/include/openssl/ssl.h
/home/user/miniconda3/envs/py38b3/include/openssl/ssl.h
/home/user/miniconda3/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.0.2s-h7b6447c_0/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.1.1b-h7b6447c_1/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.1.1c-h7b6447c_1/include/openssl/ssl.h
/usr/include/openssl/ssl.h

Uw systeem is misschien anders dan het mijne, maar zoals u hier ziet, heb ik veel verschillende geïnstalleerde openssl-bibliotheken. Op het moment van schrijven verwacht python 3.8 openssl 1.0.2 of 1.1:

Python vereist een OpenSSL 1.0.2 of 1.1 compatibele libssl met X509_VERIFY_PARAM_set1_host().

Je moet dus controleren welke van die geïnstalleerde bibliotheken je kunt gebruiken om bijvoorbeeld te linken

/usr/bin/openssl version
OpenSSL 1.0.2g  1 Mar 2016
./configure --with-openssl="/usr"
make && make install

Misschien moet je er een paar proberen of een nieuwe installeren om de bibliotheek te vinden die geschikt is voor je Python en je besturingssysteem.


Antwoord 16, autoriteit 2%

U kunt een van deze twee doen:

  1. Selecteer tijdens het installeren van Anaconda de optie om Anaconda aan het pad toe te voegen.

of

  1. Zoek deze (volledige) paden uit je installatiemap van Anaconda en voeg ze toe aan de omgevingsvariabele:

\Anaconda

\Anaconda\Bibliotheek\mingw-w64\bin

\Anaconda\Bibliotheek\usr\bin

\Anaconda\Bibliotheek\bin

\Anaconda\Scripts

\anaconda\Bibliotheek

\anaconda\condabin

Voeg de bovenstaande paden toe aan de systeemvariabele “Pad” en de fout zou niet meer moeten worden weergegeven 🙂


Antwoord 17

Ik had hetzelfde probleem en was in staat om op te lossen met de volgende stappen:

sudo yum install -y libffi-devel
sudo yum install openssl-devel
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
sudo tar xf Python-3.7.1.tar.xz
cd Python-3.7.1
sudo ./configure --enable-optimizations
# Install into /usr/local/bin/python3.7, don't overwrite global python bin
sudo make altinstall

Afhankelijk van PERMS heeft u mogelijk geen sudo nodig.

Results:
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-10.0.1 setuptools-39.0.1

zou nu kunnen uitvoeren

python3.7 -V 

en

pip3.7 -V

Bij het installeren van pakketten:

pip3.7 install pandas

of afhankelijk van permanzen, kunt u ook de –user-vlag toevoegen zoals SO:

pip3.7 install pandas --user

18

In mijn geval met het gebruik van Mac, heb ik verwijderd
/Applications/Python 3.7.
Omdat ik al Python3.7 had bij brew install python3.

Maar het was een trigger van het bericht

PIP is geconfigureerd met locaties die TLS / SSL vereisen, maar de SSL-module in Python is niet beschikbaar.

wat ik in mijn situatie heb gedaan

  1. Ik heb macOS 64- gedownload bit-installatieprogrammaopnieuw en geïnstalleerd.
  2. Dubbelklik /Applications/Python3.6/Install Certificates.commanden /Applications/Python3.6/Update Shell Profile.command.
  3. Mac opnieuw opstarten
  4. En ik weet het niet zeker, maar mogelijk bijgedragen aan het succes is pip.conf. Zie pip-installatie mislukt.

Antwoord 19

Ik heb dit probleem eindelijk opgelost. Dit zijn de details van mijn omgeving:
Versie van Python om te installeren: 3.6.8
Besturingssysteem: Ubuntu 16.04.6 LTS
Root-toegang: Nee

Sommige mensen stellen voor om libssl-devte installeren, maar het werkte niet voor mij. Ik volg deze link en ik heb het opgelost!
Kortom, ik download, extraheer, bouw en installeer OpenSSL (openssl-1.1.1b.tar.gz). Vervolgens wijzig ik het .bashrc-bestand volg deze link.
Vervolgens download en extraheer ik Python-3.6.8.tgz. Ik bewerk Modules/Setup.dist om het SSL-pad te wijzigen (regels rond #211). Ik heb ./configure --prefix=$HOME/opt/python-3.6.8, makeen make installgedaan. Als laatste pas ik mijn .bashrcaan. Merk op dat ik --enable-optimizationsniet opneem in ./configure.


Antwoord 20

Ik heb dit kunnen oplossen door de python-versie in dit bestand bij te werken.
pyenv: versie `3.6.5′ is niet geïnstalleerd (ingesteld door /Users/taruntarun/.python-version)
Hoewel ik de nieuwste versie had geïnstalleerd, gebruikte mijn opdracht nog steeds de oude versie 3.6.5

Overstappen naar versie 3.7.3


Antwoord 21

Op macos, configureer python 3.8.1 met de onderstaande opdracht om het probleem op te lossen, ik denk dat het ook op Linux zou werken.

./configure --enable-optimizations --with-openssl=/usr/local/opt/[email protected]/

wijzig de dir-parameter op basis van uw systeem.


Antwoord 22

Als u OSX gebruikt en voor het geval de andere oplossingen niet voor u werken (net als ik).

Je kunt proberen python3 te verwijderen en pip3 te upgraden

brew uninstall --ignore-dependencies python3
pip3 install --upgrade pip   

Dit werkte voor mij 😉


Antwoord 23

(NIET op Windows!)

Hierdoor moest ik een week lang mijn haar uittrekken, dus ik hoop dat dit iemand kan helpen

Ik heb alles geprobeerd, behalve Anaconda en/of Jupyter opnieuw installeren.

Instellen

  • AWS Linux
  • Handmatig geïnstalleerde Anaconda 3-5.3.0
  • Python3 (3.7) draaide in anaconda (dwz ./anaconda3/bin/python)
  • er waren ook /usr/bin/pythonen /usr/bin/python3(maar deze werden niet gebruikt omdat het meeste werk werd gedaan in de terminal van Jupyter )

Oplossen

In de terminal van Jupyter:

cp /usr/lib64/libssl.so.10 ./anaconda3/lib/libssl.so.1.0.0

cp /usr/lib64/libcrypto.so.10 ./anaconda3/lib/libcrypto.so.1.0.0

Wat heeft dit veroorzaakt?

Dus dit werkte allemaal totdat ik probeerde een conda install conda-forge

uit te voeren

Ik weet niet zeker wat er is gebeurd, maar Conda moet worden bijgewerkt opensslop de doos (ik vermoed), dus daarna heeft alles gebroken.

In principe, onbekend voor mij, had Conda OpensSL bijgewerkt, maar op de een of andere manier de oude bibliotheken verwijderde en vervangen door libssl.so.1.1en libcrypto.so.1.1.

Python3, denk ik, is samengesteld om te zoeken naar libssl.so.1.0.0

Uiteindelijk was de sleutel tot diagnose dit:

python -c "import ssl; print (ssl.OPENSSL_VERSION)"

Gaf de aanwijzingen library "libssl.so.1.0.0" not found

De enorme aanname die ik heb gemaakt, is dat de yum–versie van SSL hetzelfde is als de conda-versie, dus gewoon het hernoemen van het gedeelde object kan werken, en dat deed het.

Mijn andere oplossing was om Python opnieuw samen te stellen, Anaconda, enz. Installeer, maar uiteindelijk ben ik blij dat ik het niet nodig heb.

Ik hoop dat dit je helpt jongens.


24

In het geval van het gebruik van pyenvom Python-installaties op Mac OS Catalina te beheren, moest ik opensslinstalleren met een brouwsel eerst en vervolgens na die vlucht pyenv install 3.7.8die de Python-installatie leken te bouwen met behulp van de opensslvan homebrew (het zei zelfs als zodanig in de installatie-uitgang). Dan pyenv global 3.7.8en ik was weg.


25

De Python-documentatie is eigenlijk heel duidelijk en het volgen van de instructies deed het werk terwijl andere antwoorden die ik hier heb gevonden, dit probleem niet vastgesteld.

  1. installeer eerst python 3.xx vanaf de bron met bijvoorbeeld versie 3.6.2 https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

  2. zorg ervoor dat je openssl hebt geïnstalleerd door brew install openssl

  3. uit te voeren

  4. pak het uit en ga naar de python-directory: tar xvzf Python-3.6.2.tar.xz && cd Python-3.6.2

  5. dan als de python-versie < 3.7, uitvoeren

CPPFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
./configure --with-pydebug

5. voer ten slotte make -s -j2uit (-sis de stille vlag, -j2vertelt uw machine om 2 taken te gebruiken)


Antwoord 26

Ik had hetzelfde probleem toen ik python3.7 probeerde te installeren op een ubuntu14.04-machine.
Het probleem was dat ik enkele aangepaste mappen had in mijn PKG_CONFIG_PATH en in mijn LD_LIBRARY_PATH, waardoor het python-buildproces de systeem-openssl-bibliotheken niet kon vinden.

probeer ze dus te wissen en kijk wat er gebeurt:

export PKG_CONFIG_PATH=""
export LD_LIBRARY_PATH=""

Antwoord 27

Ok, het laatste antwoord hierop, vanaf nu gebruik geen Python 3.8, gebruik slechts 3.7 of minder , omdat de meeste bibliotheken niet kunnen worden geïnstalleerd met de bovenstaande fout


28

Indien in Windows en het gebruik van Anaconda, dan heb ik het met de eerste,

opgelost

conda activate
pip install <lib>

Dit werkte voor mij.

Other episodes