##centOS安装python3及pip3
####第一步:python2备份
默认Centos7中是有python安装的,但是是2.7版本,我们需要安装py3。我们去看一下默认的py2.7在哪里。
[root@localhost bin]# cd /usr/bin
[root@localhost bin]# ls python*
python python2 python2.7
[root@localhost bin]#
三个显示结果中最后一个是python2.7,实际上这几个文件之间是有依赖关系的。在ls 后面加个 -al参数,如下:
[root@localhost bin]# ls -al python*
lrwxrwxrwx. 1 root root 33 Oct 21 12:30 python -> python2
lrwxrwxrwx. 1 root root 9 Oct 19 23:55 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 Aug 4 08:40 python2.7
[root@localhost bin]#
依赖关系很明显就可以看到。我们要安装版本3,首先要把刚才显示的三个python文件中的第一个python给备份一下(不保留源文件,仅保留备份文件就可以)
使用如下命令:
[root@localhost bin]# mv python python.bak
python文件变成了python.bak文件,bak文件就放这里吧,再也不用管它了。避免以后麻烦,就留在这里不用删除。系统准备好了,接下来,我们要去下载了。
####第二步:依赖关系
[root@localhost ~]# yum -y install zlib-devel
(https://www.jianshu.com/p/6ca263642afc)
[root@localhost ~]# yum -y install bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
(https://blog.csdn.net/zuolovefu/article/details/78142507)
问题描述:“no module named ‘_ctypes’’”
Python3 中有个内置模块叫 ctypes,它是 Python3 的外部函数库模块,它提供兼容 C 语言的数据类型,并通过它调用 Linux 系统下的共享库(Shared library),此模块需要使用 CentOS 7 系统中外部函数库(Foreign function library)的开发链接库(头文件和链接库)。
所以错误原因是:在 CentOS 7 系统中没有安装外部函数库(软件包名:libffi)的开发链接库软件包。
CentOS 7 系统下外部函数库(libffi)的开发链接库软件包是 libffi-devel,只要安装此软件包即可解决:(https://blog.csdn.net/oZhengTuoJiaSuo/article/details/82427076)
[root@localhost ~]# yum -y install libffi-devel
问题描述:“cannot import name ‘httpshandler’”
原因在于openssl,openssl-devel两个文件包未正确安装或者安装顺序出错。
用下来的命令来安装:(参考: https://www.cnblogs.com/liangmingshen/p/9515355.html)
[root@localhost ~]# yum install openssl -y
[root@localhost ~]# yum install openssl-devel -y
####第三步:安装包下载
比较推荐下面这种方式,我们在linux上找一个目录,然后使用wget命令下载到这个目录,然后解压->安装。如下:
https://www.python.org/ftp/python/ 这个是所有的python版本存放的地方。我们想使用哪个版本就用哪个。
很多版本,这里选择的是比较新的3.7.0,点进去,找到下面这个文件。Python-3.7.0.tgz,右键’copy link address’
在Python-3.7.0.tgz上右键’copy link address’可得到如下地址:(如果是其他版本道理与这个是一样的)
链接准备好了,我们在Centos 7上创建一个目录吧。一般选择的是/usr/local里面的,如下命令(当前我们依然还在之前的/usr/bin目录下面,先不要动,还在这里):
[root@localhost bin]# mkdir /usr/local/python3
目录创建好了,我们就cd切换进去,使用wget下载安装包到当前目录:
[root@localhost bin]# cd /usr/local/python3
[root@localhost python3]# wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
等待下载完成之后会在当前目录下出现一个tgz包,命令解压这个包到当前目录就可以:
#解压命令
[root@localhost python3]# tar -xvf Python-3.6.3.tgz
#解压完成后,查看目录下文件
[root@localhost python3]# ll
total 22148
drwxr-xr-x. 17 501 501 4096 Oct 21 12:22 Python-3.6.3
-rw-r--r--. 1 root root 22673115 Oct 3 15:47 Python-3.6.3.tgz
第四步:编译安装
下载的安装包是未经过编译的,需要编译一下:
[root@localhost python3]# cd Python-3.6.3/
[root@localhost Python-3.6.3]#
然后如下命令(指定安装位置为当前目录下新建的python3dir文件夹):
[root@localhost Python-3.6.3]# ./configure --prefix=/usr/local/python3Dir
稍微解释上面这句命令,这句话的大致目的就是把python的安装目录指定一下,这样的话,里面的一些bin目录、lib目录就都会存放在这个目录下面。如果不指定这个安装目录的话,最后python的安装文件将分散到linux的默认目录,不在一块。我们指定安装目录,以后卸载的话直接删除目录就可以干净卸载了。
现在我们当前目录还是在/usr/local/python3/Python-3.6.3,执行如下命令:
# 编译安装
# ./configure --help查看编译参数
# 默认安装在'/usr/local/bin','/usr/local/lib' etc
# 可以通过参数指定如:--prefix=/usr/local/python3
[root@localhost Python-3.6.3]# make
然后出来一大堆代码,等它执行完毕。接着输入以下命令:
[root@localhost Python-3.6.3]# make install
又是一大堆代码,执行完毕之后,检查pip和setuptools是否安装成功。
我们可以切换到/usr/local/python3dir目录下去查看了。
[root@localhost Python-3.6.3]# cd /usr/local/python3Dir/
[root@localhost python3Dir]# ll
total 0
drwxr-xr-x. 2 root root 245 Oct 21 12:26 bin
drwxr-xr-x. 3 root root 24 Oct 21 12:26 include
drwxr-xr-x. 4 root root 63 Oct 21 12:26 lib
drwxr-xr-x. 3 root root 17 Oct 21 12:26 share
[root@localhost python3Dir]#
####第五步:创建软连接
[root@localhost python3Dir]# cd /usr/bin
//创建软连接:
[root@localhost bin]# ln -s /usr/local/python3Dir/bin/python3 /usr/bin/python3 //根据需要可修改为python
[root@localhost bin]# ln -s /usr/local/python3Dir/bin/pip3 /usr/bin/pip3
若将python3软连接设置为python:
要注意centos的yum命令是需要python支持的,我们贸然把当期的版本更换了,万一yum出错怎么办,还是让yum依然用原来的2.7版本吧。好吧我们帮它改一下吧:
[root@localhost bin]# vim /usr/bin/yum
将文件第一行的
#!/usr/bin/python
改成#!/usr/bin/python2.7
[root@localhost bin]# vim /usr/libexec/urlgrabber-ext-down
将/usr/bin/python
改为/usr/bin/python2.7
[root@localhost bin]# vim /usr/bin/yum-config-manager
解决办法同上: #!/usr/bin/python
换成 #!/usr/bin/python2.7
(https://blog.csdn.net/chaojiwanwan/article/details/71439066)
####测试python3及pip3:
[root@localhost bin]# python3 -V
Python 3.7.0
[root@localhost bin]# pip3 -V
pip 10.0.1 from /usr/local/python3Dir/lib/python3.7/site-packages/pip (python 3.7)
(参考: https://www.cnblogs.com/simuhunluo/p/7704765.html)
###独立安装pip3
####安装setuptools
- 下载setuptools压缩包
- 解压压缩包
- 进入该目录进行编译安装
1. 下载setuptools wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
36.6.0的直接下载地址:
wget --no-check-certificate
https://pypi.python.org/packages/45/29/8814bf414e7cd1031e1a3c8a4169218376e284ea2553cc0822a6ea1c2d78/setuptools-36.6.0.zip#md5=74663b15117d9a2cc5295d76011e6fd1
2. 解压该文件 tar zxvf setuptools-19.6.tar.gz
3.进入该目录 cd setuptools-19.6
4. 编译安装
python3.5 setup.py build
在这里失败,提示说需要zlib-devel依赖,RuntimeError: Compression requires the (missing) zlib module
好吧,那就继续安装这个依赖即可,yum在手,天下我有,有木有。
yum install -y zlib-devel
但是现在不能直接执行上一条编译命令,因为这个zlib其实是针对python的,所以我们需要对python再进行一次编译和安装命令。
就是上文中所使用的make&make install即可。
ok,完事儿之后在执行
python3.5 setup.py build 无报错信息
继续执行
python3.5 setup.py install 搞完。
####安装pip3
- 下载pip3压缩包
- 解压压缩包
- 进入该目录进行编译安装
1. 使用Linux下载文件 wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
pip-9.0.1的下载地址:https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
2. 解压文件 tar zxvf pip-8.0.2.tar.gz
3. 进入该目录 cd pip-8.0.2
4. 同样执行:
python3.5 setup.py build
python3.5 setup.py install
没有提示错误,那么就安装成功了。
安装好了之后会在我们的python目录中成成该执行文件的。
Adding pip 8.0.2 to easy-install.pth file
Installing pip3.5 script to /usr/local/python/bin
Installing pip3 script to /usr/local/python/bin
Installing pip script to /usr/local/python/bin
这个就是安装是的提示,给我们说的很清楚,说将pip3安装到了/usr/local/python/bin目录中
对于我此时的目录就是:
/usr/local/python/bin
###卸载python3
由于我们在安装python3的时候将其安装位置指定到/usr/local/python3Dir/
目录中,故我们可直接删除该目录将python3卸载干净:
[root@localhost ~]# rm -rf /usr/local/python3Dir/
别忘了创建的软连接:
[root@localhost bin]# rm /usr/bin/python3
[root@localhost bin]# rm /usr/bin/pip3