Vaše instalace Pythonu nepodporuje SSL? Po úpravě Setup.dist jej musíte znovu zkompilovat soubor umístěný ve zdrojovém adresáři Pythonu. Podívejme se, jak na to.
Než začneme, zkontrolujte, zda vaše stávající instalace Pythonu podporuje OpenSSL, jak je uvedeno níže:
$ python
Do příkazového řádku pythonu zadejte ‚import ssl‘
>>> import ssl
Pokud vidíte níže uvedenou chybu, pak Python nepodporuje SSL.
$ python Python 2.4.3 (#1, Jan 9 2013, 06:47:03) [GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import ssl Traceback (most recent call last): File "<stdin>", line 1, in ? ImportError: No module named ssl >>>
Poznámka: Ve starších verzích Pythonu můžete zkusit použít ‘hasattr ‘ funkce, jak je znázorněno níže:
>>> import socket >>> hasattr(socket,"SSL") False >>>
Pokud vidíte „False “, pak Python nepodporuje SSL.
Jak kompilovat Python ze zdroje s podporou OpenSSL
Předpoklady:
OpenSSL by mělo být nainstalováno ve výchozím nastavení, ale pokud jej nemáte, nainstalujte jej podle obrázku níže.
Nainstalujte OpenSSL a jeho vývojové balíčky jak je uvedeno níže:
$ yum install openssl
$ yum install openssl-devel
(nebo)
Nainstalujte OpenSSL ze zdroje:
$ wget http://www.openssl.org/source/openssl-1.0.2e.tar.gz
$ ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
Poznámka: Ve výchozím nastavení bude openssl nainstalováno pod /usr/local/ssl . Pokud si nechcete zahrávat se stávající instalací SSL, nainstalujte ji do jiného adresáře.
$ make $ make test $ make install
Instalace OpenSSL je dokončena. Pojďme nyní zkompilovat Python.
Stáhnout zdroj Pythonu:
$wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
$tar xvzf Python-3.5.1.tgz
$vim Modules/Setup.dist
Vyhledejte „SSL “ a odkomentujte kód, jak je uvedeno níže (ve verzi 3.5, od řádku 203 do 210):
_socket socketmodule.c # Socket module helper for SSL support; you must comment out the other # socket line above, and possibly edit the SSL variable: #SSL=/usr/local/ssl _ssl _ssl.c \ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ -L$(SSL)/lib -lssl -lcrypto
Poznámka: V případě, že jste nainstalovali OpenSSL v nestandardním umístění, musíte změnit ‘SSL ‘ k odkazování na správnou cestu ve výše uvedeném kódu.
Například,
_socket socketmodule.c # 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
Po dokončení
$ ./configure $ make $ make install
Zkontrolovat podporu OpenSSL v Pythonu
$/usr/local/bin/python3.5
Do příkazového řádku pythonu zadejte „import ssl ”
>>> import ssl
Pokud nevidíte žádnou chybu, pak Python podporuje SSL. To je ono!