Centos7 安装Python3.x

配置Python2 和 Python3 共存

高能提示,如果想要安装Scrapy,请先滚到底看下情况。

开始安装

编译环境

一言不合就安装一堆

yum groupinstall 'Development Tools'
yum install zlib-devel bzip2-devel openssl-devel ncurese-devel

下载你需要的Python版本

Python

3.6:https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

解压+编译

tar -Jxvf Python-3.6.2.tar.xz
cd Python-3.6.2
./configure
make && make install

如果出现 zipimport.ZipImportError: can't decompress data; zlib not available
安装 zlib相关的工具就好
yum install zlib*

修改默认的Python和pip版本

python

切换到 /usr/bin 目录,可以看见该目录下有
ll | grep python

看到

lrwxrwxrwx.   1 root root          7 Jul 10 20:22 python -> python2
lrwxrwxrwx.   1 root root          9 Jul 10 20:22 python2 -> python2.7
-rwxr-xr-x.   1 root root       7136 Nov  6  2016 python2.7

看到python 用软连接指向了python2,python2又软连接指向了python2.7
我们只需要修改python就可以。
whereis python3

python3: /usr/local/bin/python3 /usr/local/bin/python3.6 /usr/local/bin/python3.6m /usr/local/bin/python3.6-config /usr/local/bin/python3.6m-config /usr/local/lib/python3.6

/usr/local/bin/python3.6 是python3.6二进制执行文件
将软连接指向 python3.6 即可。

先删除原来的连接
[root@foobar bin]# rm /usr/bin/python
创建软连接
[root@foobar bin]# ln -s /usr/local/bin/python3.6 /usr/bin/python

现在默认的python为3.6版本

pip

先删除原来默认pip的软连接,原理和python一样。
[root@foobar bin]# whereis pip
pip: /usr/bin/pip /usr/bin/pip2.7 /usr/local/bin/pip3.6

所要做的是修改软连接,将其指向3.6的pip
[root@foobar bin]# rm /usr/bin/pip
ln -s /usr/local/bin/pip3.6 /usr/bin/pip

更新yum相关设置

[root@foobar bin]# vim /usr/bin/yum
[root@foobar bin]# vim /usr/libexec/urlgrabber-ext-down
分别将第一行的 #!/usr/bin/python 改成 #!/usr/bin/python2

确认

[root@foobar bin]# pip install -U pip
Requirement already up-to-date: pip in /usr/local/lib/python3.6/site-packages
[root@foobar bin]# python --version
Python 3.6.2
[root@foobar bin]# pip --version
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
[root@foobar bin]# python2 --version
Python 2.7.5
[root@foobar bin]# pip2 --version
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)

第二天

博主第二天哭着回来,被各种报错搞崩心态

这种方式在安装scrapy的时候有问题,各种ssl问题,报错很多。
还是建议用Miniconda,或者是Anaconda