1.安装之前先更新yum源
yum update
2.下载安装包
https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz
3.解压包
tar -xvf Python-3.8.5.tgz
4.编译安装
cd Python-3.8.5
./configure --prefix=/usr/local/python3
make
make install
5.建立软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
6.升级pip
python -m pip install --upgrade pip
编译问题:
1.在make install 过程中出现ModuleNotFoundError: No module named 'zlib'
Traceback (most recent call last):
File "<frozen zipimport>", line 520, in _get_decompress_func
ModuleNotFoundError: No module named 'zlib'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<frozen zipimport>", line 568, in _get_data
File "<frozen zipimport>", line 523, in _get_decompress_func
zipimport.ZipImportError: can't decompress data; zlib not available
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/root/Python-3.8.5/Lib/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/root/Python-3.8.5/Lib/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/root/Python-3.8.5/Lib/ensurepip/__main__.py", line 5, in <module>
sys.exit(ensurepip._main())
File "/root/Python-3.8.5/Lib/ensurepip/__init__.py", line 210, in _main
return _bootstrap(
File "/root/Python-3.8.5/Lib/ensurepip/__init__.py", line 129, in _bootstrap
return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
File "/root/Python-3.8.5/Lib/ensurepip/__init__.py", line 32, in _run_pip
runpy.run_module("pip", run_name="__main__", alter_sys=True)
File "/root/Python-3.8.5/Lib/runpy.py", line 203, in run_module
mod_name, mod_spec, code = _get_module_details(mod_name)
File "/root/Python-3.8.5/Lib/runpy.py", line 144, in _get_module_details
return _get_module_details(pkg_main_name, error)
File "/root/Python-3.8.5/Lib/runpy.py", line 111, in _get_module_details
__import__(pkg_name)
File "<frozen zipimport>", line 241, in load_module
File "<frozen zipimport>", line 709, in _get_module_code
File "<frozen zipimport>", line 570, in _get_data
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1
解决:是由于zlib没有安装,yum install zlib zlib-devel -y 后解决此问题。
2.升级pip遇到ssh版本低问题
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pip/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pip/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pip/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pip/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pip/
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
Requirement already up-to-date: pip in /usr/local/python3/lib/python3.8/site-packages (20.1.1)
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
解决:
下载 wget http://www.openssl.org/source/openssl-1.1.1g.tar.gz
编译 tar -xvf openssl-1.1.1g.tar.gz && cd openssl-1.1.1g && ./config --prefix=/usr/local/openssl && make && make install
mv /usr/bin/openssl /usr/bin/openssl_bak
mv /usr/include/openssl /usr/include/openssl_bak
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
重新编译python3.8.5
3. yum 时出现“except KeyboardInterrupt, e:” 问题
File "/usr/bin/yum", line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax
解决:是由于python升级成python3后去掉了原来链接,/usr/bin/yum中使用的是python2.7,恢复原来链接ln -sf /usr/bin/python2.7 /usr/bin/python 将python3重新使用新链接ln -s /usr/local/python3/bin/python3 /usr/bin/python3。