这是一篇奠基文,虽然很多年前上大学的时候自己就开始做技术博客,但是后来主要是因为懒,又被很多别的琐事所干扰不能一门心思搞技术,所以就中断了。现在决定重新记录,一来很多知识都是重复运用,用完不去加强记忆,下一次要用的时候又要再次搜索,效率非常低下,二来做技术还是不能太闭门造车,如果能和网友们一起分享探讨,指出我的不足之处,对于自身一定是有帮助的。
本人行文比较啰嗦,重要的干货都用粗体标记了
今天就来记录在centos中安装python3和pip3的方法。
环境:阿里云香港ECS,64位centos7.4。
centos操作系统本身是自带python2的,但是由于我学习python就是学习的python3,而且据说python将来也要用python3一统天下了,所以想安装python3来替代掉原有的python2。
直接sudo yum install python3是不行的,提示没有可用的软件包。搜了下是要用源代码编译安装,google了一下下载了https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz,但实际上在官网(https://www.python.org/downloads/source/)可以找到最新版的python安装包,都已经3.7了
命令:wget --no-check-certificate https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
之所以有--no-check-certificate选项应该是https协议(而非http)造成的
下载后解压,进入目录后执行:
sudo ./configure --prefix=/usr/local/python3
这一步暂时还不明白是什么意思,别人的博客上说是创建指定目录,我感觉这还待进一步确定。
然后make && sudo make install,等待安装完成即可
我在make && sudo make install的时候并没有提示软件库依赖不足,可能是由于我之前安装apache php mysql之类的时候已经安装过所需依赖了。
这个时候输入python --version仍然是提示python2的版本,我们要创建一个连接文件才能执行python3命令:
sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3
然后输入python3 --version就能提示3.6.0版本了,输入python --version提示2.7.0版本,这样就能两个版本共存。
如果想直接用python命令来调用python3,用python2命令来调用python2,可以重新创建命令python的连接文件
可以先备份一下原有的python连接文件
sudo mv /usr/bin/python /usr/bin/python.backup
然后创建新的连接文件
sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python
然后通过python --version查看就能显示出3.6.0版本了
我的环境中已经默认了有python2命令的连接文件指向2.7.0的python,因此不需要重新创建。
但是由于yum使用的是python2,讲默认的python命令指向python3后使用yum命令会出错,因此还需要更改一下yum配置文件:
ls /usr/bin/yum*
一共有7个:yum yum-config-manager yum-debug-restore yum-groups-manager
yum-builddep yum-debug-dump yumdownloader
每个都要改,例如:
sudo vi /usr/bin/yum
将第一行被我们更改的连接文件改成python2的连接文件即可:
#!/usr/bin/python2
尝试了一下sudo yum update,仍然提示出错:
File "/usr/libexec/urlgrabber-ext-down", line 28 except OSError, e:
^SyntaxError: invalid syntax
File "/usr/libexec/urlgrabber-ext-down", line 28 except OSError, e:
^SyntaxError: invalid syntax
File "/usr/libexec/urlgrabber-ext-down", line 28 except OSError, e:
^SyntaxError: invalid syntax
File "/usr/libexec/urlgrabber-ext-down", line 28 except OSError, e:
既然他说到/usr/libexec/urlgrabber-ext-down这个文件,那么我们也打开看一看,发现顶部仍然需要改成python2,更改完成后再次执行sudo yum update则没有任何问题。
至此python安装完毕,接下来是pip,仍然是下崽源代码安装,只不过安装的时候要确保是使用python3进行install,源代码从github下载:
wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.1.tar.gz
解压后进入目录,使用python3 setup.py install进行安装,别忘了sudo
安装完成后也可以做一个pip的连接,让pip的默认版本为python3:
sudo ln -s /usr/local/python3/bin/pip /usr/bin/pip3
这样,pip2和pip3在计算机中共存了,pip2命令调用pip2,pip命令调用pip3