本文章的指导来源是大佬的博客,原链接https://blog.youkuaiyun.com/lovefengruoqing/article/details/79284573#comments,我在看文章的基础上自己都操作了一遍,只是为了方便我自己以后的查找,侵删
centos7 自带有 python,但是却是 python2 版本的 python,要从github上把源码clone下来进行编译安装,因为 yum 源中并没有现成的 python3 程序,步骤如下:
1.首先,你要知道系统现在的python的位置在哪儿:
[root@localhost ~]# whereis python
python: /usr/bin/python /usr/bin/python2.7 /usr/bin/python2.7-config /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz
可以看到我们的python在 /usr/bin目录中,而且是2.7版本
[root@localhost ~]# cd /usr/bin
[root@localhost bin]# ll python*
lrwxrwxrwx. 1 root root 7 Dec 31 17:22 python -> python2
lrwxrwxrwx. 1 root root 9 Dec 31 17:22 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 Nov 6 2016 python2.7
-rwxr-xr-x. 1 root root 1835 Nov 6 2016 python2.7-config
lrwxrwxrwx. 1 root root 16 Dec 31 17:22 python2-config -> python2.7-config
lrwxrwxrwx. 1 root root 14 Dec 31 17:22 python-config -> python2-config
[root@localhost bin]#
可以看到,python指向的是python2,python2指向的是python2.7,因此我们可以装个python3,然后将python指向python3,然后python2指向python2.7,那么两个版本的python就能共存了---大佬原话
2.因为我们要安装python3,所以要先安装相关包,用于下载编译python3:
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
执行这个代码的时候总是提示another app is currently巴拉巴拉,关不胜关,yum在锁定状态中。
可以通过强制关掉yum进程:
rm -f /var/run/yum.pid
然后再执行上面的命令安装相关包
ps:
如果安装3.7.3版本的,注意一下需要新的依赖,yum install libffi-devel -y
3.我不知道我的centos7有没有安装pip,索性试一下,有枣没枣打一杆子
yum -y install epel-release
运行这个命令添加epel扩展源,果然,我没有安装
yum install python-pip
安装pip
不知为何安装最后显示如下信息,不知道别人会不会遇到
Total download size: 1.7 M
Installed size: 7.2 M
Is this ok [y/d/N]: Exiting on user command
Your transaction was saved, rerun it with:
yum load-transaction /tmp/yum_save_tx.2019-06-08.16-43.bzD0c1.yumtx
既然rerun,那就rerun一下
yum load-transaction /tmp/yum_save_tx.2019-06-08.16-43.bzD0c1.yumtx
然后问是否要安装,你问我资不资瓷,当然是资瓷得啦
4.用pip装wget
pip install wget
然后继续提示
[root@localhost bin]# pip install wget
Collecting wget
Downloading https://files.pythonhosted.org/packages/47/6a/62e288da7bcda82b935ff0c6cfe542970f04e29c756b0e147251b2fb251f/wget-3.2.zip
Installing collected packages: wget
Running setup.py install for wget ... done
Successfully installed wget-3.2
You are using pip version 8.1.2, however version 19.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
意思是没有更新到新版本,我没有体验过的船新版本???
那就更新吧
pip install --upgrade pip
还是一样,这就十分难过了········
果断搜索,相信网络的力量--https://blog.youkuaiyun.com/jasonzzj/article/details/70513544
这个大佬就试了man pip,然后发现了新问题,然后我执行了这个命令········竟然进不去!!
但是我还是抱着试试看的态度执行了他的命令
pip install --upgrade pip -vvv
于是好了!!!!
马德放弃治疗了
5.用wget下载python3的源码包
[root@localhost bin]# wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
--2019-06-08 17:04:09-- https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
Resolving www.python.org (www.python.org)... 151.101.0.223, 151.101.64.223, 151.101.128.223, ...
Connecting to www.python.org (www.python.org)|151.101.0.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16992824 (16M) [application/octet-stream]
Saving to: ‘Python-3.6.4.tar.xz’
100%[=====================================================================================================================================================>] 16,992,824 135KB/s in 1m 54s
2019-06-08 17:06:04 (146 KB/s) - ‘Python-3.6.4.tar.xz’ saved [16992824/16992824]
6.编译python3源码包
xz -d Python-3.6.4.tar.xz
tar -xf Python-3.6.4.tar
#然后显示
[root@localhost bin]# ll Python*
-rw-r--r--. 1 root root 83742720 Dec 19 2017 Python-3.6.4.tar
进入解压后的目录,依次执行下面命令进行手动编译
./configure prefix=/usr/local/python3
#执行的最后会显示下面的信息
If you want a release build with all stable optimizations active (PGO, etc),
please run ./configure --enable-optimizations
手痒难耐,强迫症发作,于是执行了一下./configure --enable-optimizations
然后再执行一下
make && make install
让进程飞一会
如果最后没提示出错,就代表正确安装了,在/usr/local/目录下就会有python3目录--大佬原话,不过我是在下面的目录下看到的
[root@localhost lib]# pwd
/usr/local/lib
[root@localhost lib]# ll
total 28196
-r-xr-xr-x. 1 root root 28859384 Jun 8 17:47 libpython3.6m.a
drwxr-xr-x. 2 root root 67 Jun 8 17:48 pkgconfig
drwxr-xr-x. 35 root root 8192 Jun 8 17:48 python3.6
而且这个目录里已经看到python3了,执行python3(不是python)命令是可以执行成功的
[root@localhost bin]# pwd
/usr/local/bin
[root@localhost bin]# ll
total 22632
lrwxrwxrwx. 1 root root 8 Jun 8 17:48 2to3 -> 2to3-3.6
-rwxr-xr-x. 1 root root 101 Jun 8 17:48 2to3-3.6
-rwxr-xr-x. 1 root root 242 Jun 8 17:48 easy_install-3.6
lrwxrwxrwx. 1 root root 7 Jun 8 17:48 idle3 -> idle3.6
-rwxr-xr-x. 1 root root 99 Jun 8 17:48 idle3.6
-rwxr-xr-x. 1 root root 214 Jun 8 17:48 pip3
-rwxr-xr-x. 1 root root 214 Jun 8 17:48 pip3.6
lrwxrwxrwx. 1 root root 8 Jun 8 17:48 pydoc3 -> pydoc3.6
-rwxr-xr-x. 1 root root 84 Jun 8 17:48 pydoc3.6
lrwxrwxrwx. 1 root root 9 Jun 8 17:48 python3 -> python3.6
-rwxr-xr-x. 2 root root 11569896 Jun 8 17:47 python3.6
lrwxrwxrwx. 1 root root 17 Jun 8 17:48 python3.6-config -> python3.6m-config
-rwxr-xr-x. 2 root root 11569896 Jun 8 17:47 python3.6m
-rwxr-xr-x. 1 root root 3117 Jun 8 17:48 python3.6m-config
lrwxrwxrwx. 1 root root 16 Jun 8 17:48 python3-config -> python3.6-config
lrwxrwxrwx. 1 root root 10 Jun 8 17:48 pyvenv -> pyvenv-3.6
-rwxr-xr-x. 1 root root 441 Jun 8 17:48 pyvenv-3.6
理论上讲,此时已经安装成功了
不过我们是这么容易满足的人吗!?
7.添加软链接
将原来的链接备份
mv /usr/bin/python /usr/bin/python.bak
#添加python3的软链接
ln -s /usr/local/bin/python3.6 /usr/bin/python
#前面的目录是实际的启动目录,视实际情况而定,安装完以后记得ll来查找一下
测试是否安装成功了(我的已经成功了,祝各位顺利)
python -V
8.更改yum配置,因为yum要用到python2才能执行,否则会导致yum不能正常使用
vi /usr/bin/yum
把开头的#! /usr/bin/python修改为#! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
把开头的#! /usr/bin/python 修改为#! /usr/bin/python2
本想单纯的按步骤操作一遍,但是中间排错太多,已经是原创了········
结果展示
[root@localhost bin]# python
Python 3.6.4 (default, Jun 8 2019, 17:46:38)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
ps:
还需要把python3的bin添加到环境变量中,不然只能用python3命令,其他由python3安装的都用不了。
export PATH=$PATH:/usr/local/bin
#以本次我自己的设备安装路径为基础,各位修改的时候注意链接