文章目录
一下载
-
打开Python3官网:https://www.python.org/
-
下拉找到,下图下载位置,点击版本下载:
-
复制要安装的Python3下载地址,如:https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
-
命令行执行(在你需要下载的目录)
wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
打开Python3官网:https://www.python.org/
下拉找到,下图下载位置,点击版本下载:
复制要安装的Python3下载地址,如:https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
命令行执行(在你需要下载的目录)
wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
`
编译
# 解压
tar xzvf Python-3.8.2.tgz
cd Python-3.8.2
#按个人喜好选择目录
mkdir /usr/local/python3
# python3 这里是一个坑,需要安装ssl的支持
# 使用--with-ssl参数,没有指定具体的SSL库路径,因此Python将使用系统默认的SSL库
# 使用--with-openssl参数指定了一个具体的OpenSSL库路径,这样可以确保Python编译时使用指定的OpenSSL版本
# ./configure --prefix=/usr/local/src/python3 --with-openssl=/usr/bin/openssl
./configure --prefix=/usr/local/python3 --with-ssl
make
make install
# 解压
tar xzvf Python-3.8.2.tgz
cd Python-3.8.2
#按个人喜好选择目录
mkdir /usr/local/python3
# python3 这里是一个坑,需要安装ssl的支持
# 使用--with-ssl参数,没有指定具体的SSL库路径,因此Python将使用系统默认的SSL库
# 使用--with-openssl参数指定了一个具体的OpenSSL库路径,这样可以确保Python编译时使用指定的OpenSSL版本
# ./configure --prefix=/usr/local/src/python3 --with-openssl=/usr/bin/openssl
./configure --prefix=/usr/local/python3 --with-ssl
make
make install
这一步可能遇到的问题:
zipimport.ZipImportError: can’t decompress data; zlib not available
解决方法:
yum -y install zlib*
vi Modules/Setup
# 去掉下面这句的注释
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz`
# 过程中会进行zlib相关的编译
make install
这一步还可能遇到的问题:
ModuleNotFoundError: No module named ‘_ctypes’
解决方案:
yum install libffi-devel -y
# 过程中会进行 `ctypes` 的相关编译
make install
检查一下:
ls /usr/local/python3/bin`
2to3 2to3-3.8 easy_install-3.8 idle3 idle3.8 pip3 pip3.8 pydoc3 pydoc3.8 python3 python3.8 python3.8-config python3-config
要注意的是产生了:python3
和 pip3.8
-
查看版本:
/usr/local/python3/bin/python3 -V # 显示 Python 3.8.2
-
运行:
/usr/local/src/python3/bin/pip3 -V # 显示: pip 10.0.1 from /usr/local/src/python3/lib/python3.7/site-packages/pip (python 3.7)
进行链接替换,生效python3.7
-
执行 python -V
输出 Python 2.7.5
-
查找文件并显示命令路径(which是查找PATH路径下配置的文件) which python
,
显示 /usr/bin/python
-
执行 pip -V
输出 pip 20.1 from /usr/lib/python2.7/site-packages/pip-20.1-py2.7.egg/pip (python 2.7)
如显示 -bash: pip: command not found
运行 easy_install pip
-
执行 which pip
输出 /usr/bin/pip
-
链接替换:
ln -s /usr/local/python3/bin/python3 /usr/bin/python -f
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip -f
-
检查执行:python -V
应显示 Python 3.8.2
-
执行:pip -V
显示pip 19.2.3 from /usr/local/python3/lib/python3.8/site-packages/pip (python 3.8)
-
补充
还需要补充一个 easy_install
的指向,要知道这个也是有版本区别的,在后续我们使用python3的时候,可能还需要用到,因此就需要进行链接切换:
ln -s /usr/local/python3/bin/easy_install /usr/bin/easy_install -f
实际上熟悉linux的同学知道这仅仅就是环境变量的切换,
只是上面采用了覆盖python2
的默认文件来实现这个python/pip/easy_install
指向python3
方法很多,例如将/usr/local/src/python3/bin的路径放在PATH的最前面,等等。
结果一样,就看自己要怎么使用了。
yum 的影响
执行 python -V
输出 Python 2.7.5
查找文件并显示命令路径(which是查找PATH路径下配置的文件) which python
,
显示 /usr/bin/python
执行 pip -V
输出 pip 20.1 from /usr/lib/python2.7/site-packages/pip-20.1-py2.7.egg/pip (python 2.7)
如显示 -bash: pip: command not found
运行 easy_install pip
执行 which pip
输出 /usr/bin/pip
链接替换:
ln -s /usr/local/python3/bin/python3 /usr/bin/python -f
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip -f
检查执行:python -V
应显示 Python 3.8.2
执行:pip -V
显示pip 19.2.3 from /usr/local/python3/lib/python3.8/site-packages/pip (python 3.8)
补充
还需要补充一个 easy_install
的指向,要知道这个也是有版本区别的,在后续我们使用python3的时候,可能还需要用到,因此就需要进行链接切换:
ln -s /usr/local/python3/bin/easy_install /usr/bin/easy_install -f
实际上熟悉linux的同学知道这仅仅就是环境变量的切换,
只是上面采用了覆盖
python2
的默认文件来实现这个python/pip/easy_install
指向python3
方法很多,例如将/usr/local/src/python3/bin的路径放在PATH的最前面,等等。
结果一样,就看自己要怎么使用了。
yum的脚本是基于python2.x
的,因此,这里将系统变量进行了python3
的修改,那么就应该对yum
的脚本做python2.x
的指定
vm /usr/bin/yum
#!/usr/bin/python2.7
除了yum脚本以外,还有:
vi /usr/libexec/urlgrabber-ext-down
同样是进行指定`python2.7
最新评论
5211314
能不能教我 一点不会