Nach der Installation von Python3.6.3 unter CentOS 7 wird bei Verwendung des Befehls pip der folgende Fehler gemeldet
Traceback (most recent call last):
File "/usr/Python3.6.3/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/usr/Python3.6.3/lib/python3.6/site-packages/pip/commands/search.py", line 45, in run
pypi_hits = self.search(query, options)
File "/usr/Python3.6.3/lib/python3.6/site-packages/pip/commands/search.py", line 62, in search
hits = pypi.search({'name': query, 'summary': query}, 'or')
File "/usr/Python3.6.3/lib/python3.6/xmlrpc/client.py", line 1112, in __call__
return self.__send(self.__name, args)
File "/usr/Python3.6.3/lib/python3.6/xmlrpc/client.py", line 1452, in __request
verbose=self.__verbose
File "/usr/Python3.6.3/lib/python3.6/site-packages/pip/download.py", line 775, in request
headers=headers, stream=True)
File "/usr/Python3.6.3/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py", line 522, in post
return self.request('POST', url, data=data, json=json, **kwargs)
File "/usr/Python3.6.3/lib/python3.6/site-packages/pip/download.py", line 386, in request
return super(PipSession, self).request(method, url, *args, **kwargs)
File "/usr/Python3.6.3/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "/usr/Python3.6.3/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py", line 596, in send
r = adapter.send(request, **kwargs)
File "/usr/Python3.6.3/lib/python3.6/site-packages/pip/_vendor/cachecontrol/adapter.py", line 47, in send
resp = super(CacheControlAdapter, self).send(request, **kw)
File "/usr/Python3.6.3/lib/python3.6/site-packages/pip/_vendor/requests/adapters.py", line 497, in send
raise SSLError(e, request=request)
pip._vendor.requests.exceptions.SSLError: Can't connect to HTTPS URL because the SSL module is not available.
Installationsschritte:
1. Laden Sie Python 3.6.3 herunter
https://www.python.org/downloads/source/
2. Entpacken
Die .xz-Datei muss mit dem xz-Tool dekomprimiert werden. Installieren Sie zuerst xz
sudo yum install xz
xz d Python-3.6.3.tar.xz
tar xvf Python-3.6.3.tar
3. Laden Sie OpenSSL und OpenSSL-Devel herunter bzw. installieren Sie sie. Wenn kein Wget vorhanden ist, kann es über yum install wget installiert werden
wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz
Bei der Minimalinstallation von CentOS 7 wird openSL standardmäßig installiert, aber ich habe den lib-Pfad für die Installation nicht gefunden, also habe ich ihn deinstalliert und selbst installiert, da der Pfad bei der Installation von Python3.6 verwendet werden muss. Befehl zum Deinstallieren von OpenSSL:
sudo yum erase openssl
OpenSSL installieren:
tar zxvf openssl-1.1.0g.tar.gz
cd openssl-1.1.0g
./config --prefix=/usr/local/openssl
machen
make installieren
Unter anderem ist der Pfad nach --prefix das zu installierende Verzeichnis. Denken Sie daran, ihn unten zu verwenden.Laden Sie openssl-devel herunter und installieren Sie es
sudo yum install openssl-devel
4. Fügen Sie den Lesepfad der Bibliothek hinzu
sudo vi /etc/ld.so.conf
Fügen Sie am Ende eine Zeile hinzu
/usr/local/openssl/lib
Dieser Pfad ist der Pfad, in dem openSL gerade installiert wurde. Führen Sie dann den folgenden Befehl aus, um ihn wirksam zu machen
sudo ldconfig
5. Ändern Sie die Datei Modules/Setup.dist im Python-Installationspaket und öffnen Sie den auskommentierten Teil von SSL. Der geänderte Inhalt lautet wie folgt:
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/openssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
Der Pfad hinter SSL= ist der Pfad, in dem Sie openssl tatsächlich installiert haben
6. Konfigurieren und installieren
./configure --prefix=/usr/Python3.6.3
make
make install
Wenn während des Installationsvorgangs der Fehler gemeldet wird, dass libssl.so.1.1 nicht gefunden werden kann, überprüfen Sie bitte die Konfiguration in den Schritten 3 und 4.