环境
- 宿主机:Windows 10 64_bit
- 虚拟机:VMware 15 pro
- CentOS 7.5 64_bit
- ssh工具:SecureCRT 7.3
目录
正文
1、准备一个干净的安装环境
1)查看Linux-CentOS7本机是否已安装Python:
[root@master local]# rpm
RPM version 4.11.3
[root@master ~]# python -V
Python 2.7.5
[root@master ~]# python3 -V
Python 3.5.6
[root@master local]# rpm -qi python
如果使用rpm命令(包括在
-ivh
等安装操作)的过程中,执行后,终端无反应,直接卡住,也没任何错误信息给出,此时可杀掉进程。
解决办法:
1)rm -f /var/lib/rpm/__db.00*
# 删除rpm数据文件
2)rpm –rebuilddb
# 重建rpm数据文件
原因是:由于rpm的数据库出现异常了导致直接卡死了,造成这种异常通常是因为之前不正常的安装或查询。
若出现这种Error:warning: waiting for transaction lock on /var/lib/rpm/.rpm.lock
解决方法:rm -f /var/lib/rpm/.rpm.lock rpm --rebuilddb
2)删除现有Python:强制删除已安装的python程序及其关联(包括yum)
[root@master local]# rpm -qa | grep python | xargs rpm -ev --allmatches --nodeps
删除所有残余文件:
[root@master local]# whereis python |xargs rm -frv
验证删除,返回无结果
[root@master local]# whereis python
[root@master local]# python
-bash: /usr/bin/python: No such file or directory
[root@master local]# python -V
-bash: /usr/bin/python: No such file or directory
[root@master local]# python3 -V
-bash: /usr/local/bin/python3: No such file or directory
3)删除现有的yum【yum依赖python】
[root@master local]# rpm -qa | grep yum | xargs rpm -ev --allmatches --nodeps
[root@master local]# whereis yum |xargs rm -frv
2、下载rpm包:python-2.7.5、yum
4)创建目录,用于存放rpm包:
[root@master local]# mkdir /usr/local/src/python-2.7.5
[root@master ~]# mkdir /usr/local/src/yum-3.4.3
5)查看Centos7版本相关:
[root@master src]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
6)下载和centos版本对应的python-2.7.5
和yum
rpm包:163镜像下载地址
[root@master python-2.7.5]# pwd
/usr/local/src/python-2.7.5
[root@master python-2.7.5]# curl -O [下方下载链接]
rpm包下载地址列表:
http://mirrors.163.com/centos/7.6.1810/os/x86_64/Packages/python-2.7.5-76.el7.x86_64.rpm
http://mirrors.163.com/centos/7.6.1810/os/x86_64/Packages/python-iniparse-0.4-9.el7.noarch.rpm
http://mirrors.163.com/centos/7.6.1810/os/x86_64/Packages/python-pycurl-7.19.0-19.el7.x86_64.rpm
http://mirrors.163.com/centos/7.6.1810/os/x86_64/Packages/python-devel-2.7.5-76.el7.x86_64.rpm
http://mirrors.163.com/centos/7.6.1810/os/x86_64/Packages/python-libs-2.7.5-76.el7.x86_64.rpm
http://mirrors.163.com/centos/7.6.1810/os/x86_64/Packages/python-urlgrabber-3.10-9.el7.noarch.rpm
http://mirrors.163.com/centos/7.6.1810/os/x86_64/Packages/rpm-python-4.11.3-35.el7.x86_64.rpm
[root@master python-2.7.5]# ls
python-2.7.5-76.el7.x86_64.rpm
python-devel-2.7.5-76.el7.x86_64.rpm
python-iniparse-0.4-9.el7.noarch.rpm
python-libs-2.7.5-76.el7.x86_64.rpm
python-pycurl-7.19.0-19.el7.x86_64.rpm
python-urlgrabber-3.10-9.el7.noarch.rpm
rpm-python-4.11.3-35.el7.x86_64.rpm
yum rpm包下载地址列表:
http://mirrors.163.com/centos/7.6.1810/os/x86_64/Packages/yum-3.4.3-161.el7.centos.noarch.rpm
http://mirrors.163.com/centos/7.6.1810/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
http://mirrors.163.com/centos/7.6.1810/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
[root@master yum-3.4.3]# ls
yum-3.4.3-161.el7.centos.noarch.rpm
yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
3、安装python-2.7.5、yum
7)安装python:
[root@master python-2.7.5]# pwd
/usr/local/src/python-2.7.5
[root@master python-2.7.5]# rpm -ivh python-* rpm-python-* --nodeps --force
其中i表示安装,v表示显示安装过程,h表示显示进度
,--nodeps --force
为不考虑依赖包,强制安装。
验证:python是否安装成功
[root@master python-2.7.5]# python
Python 2.7.5 (default, Oct 30 2018, 23:45:53)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
8)接着,安装yum【一定要先安装python2】
[root@master yum-3.4.3]# pwd
/usr/local/src/yum-3.4.3
[root@master yum-3.4.3]# rpm -ivh --force --nodeps yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
[root@master yum-3.4.3]# rpm -ivh --force --nodeps yum-3.4.3-161.el7.centos.noarch.rpm yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
注意yum-3.4.3-161.el7.centos.noarch.rpm
、yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
两个包必须同时安装,否则会因为相互依赖,导致安装不成功!
因为yum依赖python2,所以修改:
[root@master Python-3.6.9]# vim /usr/bin/yum
#!/usr/bin/python
第一行修改为:
#!/usr/bin/python2
以及
[root@master Python-3.6.9]# vim /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python
同样,第一行修改为:
#!/usr/bin/python2
4、安装python 3.x
9)下载python-3.6.9
并解压:
[root@master src]# mkdir python-3.6.9
[root@master src]# cd python-3.6.9
[root@master python-3.6.9]# pwd
/usr/local/src/python-3.6.9
[root@master python-3.6.9]# wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz
...
[root@master python-3.6.9]# ls
Python-3.6.9.tar.xz
[root@master python-3.6.9]# tar -xvf Python-3.6.9.tar.xz
10)配置编译:
[root@master Python-3.6.9]# pwd
/usr/local/src/python-3.6.9/Python-3.6.9
[root@master Python-3.6.9]# ./configure prefix=/usr/local/src/python369
--prefix
是指定编译安装到哪个文件夹。
11)优化选项(可选):
执行完上一步后会提示执行以下的代码对Python解释器进行优化,执行该代码后,会编译安装到/usr/local/bin/
下,且不用添加软连接 或 环境变量。
[root@master Python-3.6.9]# pwd
/usr/local/src/python-3.6.9/Python-3.6.9
[root@master Python-3.6.9]# ./configure --enable-optimizations
12)编译和安装:时间有点长
[root@master Python-3.6.9]# make && make install
...
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-18.1 setuptools-40.6.2
13)添加软连接:
添加软链或者添加到环境变量,直接输入python3就可以使用了,下边是添加软连接:
[root@master Python-3.6.9]# ln -s /usr/local/src/python-3.6.9/Python-3.6.9 /usr/bin/python3
验证:这样的话,默认就是python3了。
[root@master Python-3.6.9]# python -V
Python 3.6.9
[root@master Python-3.6.9]# python2 -V
Python 2.7.5
[root@master Python-3.6.9]# python3 -V
Python 3.6.9
[root@master Python-3.6.9]# python
Python 3.6.9 (default, Aug 19 2019, 21:10:08)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
[root@master Python-3.6.9]# python2
Python 2.7.5 (default, Oct 30 2018, 23:45:53)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
[root@master Python-3.6.9]# pip3 -V
pip 18.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
python3.6.9在编译(make install)后,源代码可以删除
[root@master src]# pwd
/usr/local/src
[root@master src]# python -V
Python 2.7.5
[root@master src]# python3 -V
Python 3.6.9
[root@master src]# rm -rf python-3.6.9
[root@master src]# rm -rf python-2.7.5
但删除后,默认的python变为python2了。因为相当于软链接失效了。【我使用的是优化选项(可选)操作】,没有添加软链接。
14)安装pip2
现在默认pip为pip3
,问题如下:原因是python-2.7.9
起,才自带pip工具,这里安装的是python-2.7.5
。
[root@master Python-3.6.9]# pip -V
Traceback (most recent call last):
File "/usr/local/bin/pip", line 6, in <module>
from pkg_resources import load_entry_point
ImportError: No module named pkg_resources
[root@master Python-3.6.9]# pip2 -V
Traceback (most recent call last):
File "/usr/bin/pip2", line 5, in <module>
from pkg_resources import load_entry_point
ImportError: No module named pkg_resources
解决方法:
[root@master Python-3.6.9]# whereis pip
pip: /usr/bin/pip /usr/bin/pip2.7 /usr/local/bin/pip3.6
[root@master Python-3.6.9]# ll /usr/bin/pip
-rwxr-xr-x 1 root root 281 Jul 27 11:34 /usr/bin/pip
[root@master Python-3.6.9]# ll /usr/bin/pip2.7
-rwxr-xr-x 1 root root 287 Jul 27 11:34 /usr/bin/pip2.7
[root@master Python-3.6.9]# ll /usr/bin/pip*
-rwxr-xr-x 1 root root 281 Jul 27 11:34 /usr/bin/pip
-rwxr-xr-x 1 root root 283 Jul 27 11:34 /usr/bin/pip2
-rwxr-xr-x 1 root root 287 Jul 27 11:34 /usr/bin/pip2.7
[root@master Python-3.6.9]# rm -f /usr/bin/pip*
先将旧的删掉。
先安装epel
[root@master Python-3.6.9]# yum install -y epel-release
再执行安装python-pip
[root@master Python-3.6.9]# yum install -y python-pip
还是没解决,pip -V
依然报错ImportError: No module named pkg_resources
。
继续解决:安装distribute
和setuptools-41.1.0
[root@master src]# pwd
/usr/local/src
[root@master src]# wget https://pypi.python.org/packages/source/d/distribute/distribute-0.7.3.zip --no-check-certificate
[root@master src]# unzip distribute-0.7.3.zip
[root@master src]# cd distribute-0.7.3
[root@master distribute-0.7.3]# python -V
Python 2.7.5
[root@master distribute-0.7.3]# python setup.py install
[root@master distribute-0.7.3]# cd ..
[root@master src]# pwd
/usr/local/src
[root@master src]# curl -O https://files.pythonhosted.org/packages/68/0c/e470db6866aedbff3c4c88faf7f81b90343d8ff32cd68b62db1b65037fb4/setuptools-41.1.0.zip
[root@master src]# unzip setuptools-41.1.0.zip
[root@master src]# cd setuptools-41.1.0
[root@master setuptools-41.1.0]# python setup.py install
[root@master setuptools-41.1.0]# easy_install pip
验证pip2
:
[root@master setuptools-41.1.0]# pip2 -V
pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)
目前为止:环境下的python是这样的
[root@master src]# python -V
Python 2.7.5
[root@master src]# python2 -V
Python 2.7.5
[root@master src]# python3 -V
Python 3.6.9
[root@master src]# pip
-bash: /usr/local/bin/pip: No such file or directory
[root@master src]# pip2 -V
pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)
[root@master src]# pip3 -V
pip 18.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)