[python] 安装流程-centos
前言
本篇介绍一下python在Linux(Centos)上的安装方法
正文
源码安装
源码安装是python安装方法中最正规的方法,如果熟练掌握可以在系统中安装多个不同的版本
下载安装包
进入网站 https://www.python.org/downloads/, 选择对应版本的python包进入其下载页面, 下载对应的包(这里主要有两种格式的包,哪种都可以)
解压安装包
使用以下命令去解压对应格式的安装包
tar zxvf Python-2.7.14.tgz
tar vxf Python-3.6.4.tar.xz
环境准备
创建python的安装路径
使用以下语句创建一个python的安装目录
mkdir /data/python-2.7.14
mkdir /data/python-3.6.4
准备需要的系统包
python需要依赖一系列的系统包,使用以下语句基本可以覆盖到依赖
yum install gdbm gdbm-devel zlib-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc xz-devel bsddb openssl-devel
安装python
configuration
进入到安装包目录,并运行以下命令(--prefix指定了安装路径)
./configure --prefix=/data/python-2.7.14
./configure --prefix=/data/python-3.6.4
make
编译python
make
make
make install
安装python到安装目录
make install
make install
此时可以看到/data/python-2.7.14结构如下
|-- bin
| |-- 2to3
| |-- idle
| |-- pydoc
| |-- python -> python2
| |-- python2 -> python2.7
| |-- python2.7
| |-- python2.7-config
| |-- python2-config -> python2.7-config
| |-- python-config -> python2-config
| `-- smtpd.py
|-- include
| `-- python2.7
|-- lib
| |-- libpython2.7.a
| |-- pkgconfig
| `-- python2.7
`-- share
`-- man
/data/python-3.6.4结构如下
|-- bin
| |-- 2to3 -> 2to3-3.6
| |-- 2to3-3.6
| |-- easy_install-3.6
| |-- idle3 -> idle3.6
| |-- idle3.6
| |-- pip3
| |-- pip3.6
| |-- pydoc3 -> pydoc3.6
| |-- pydoc3.6
| |-- python3 -> python3.6
| |-- python3.6
| |-- python3.6-config -> python3.6m-config
| |-- python3.6m
| |-- python3.6m-config
| |-- python3-config -> python3.6-config
| |-- pyvenv -> pyvenv-3.6
| `-- pyvenv-3.6
|-- include
| `-- python3.6m
|-- lib
| |-- libpython3.6m.a
| |-- pkgconfig
| `-- python3.6
`-- share
`-- man
安装pip
从上一步可以看到,python2并没有安装pip,所以我们需要手动安装pip,pip也有多种安装方法
命令安装
进入/data/python-2.7.14/bin, 执行以下语句, 将get-pip.py下载到目录下
wget https://bootstrap.pypa.io/get-pip.py
使用2.7.14版本的python执行文件运行文件
./python get-pip.py
如下输出表示安装成功
Collecting pip
Using cached pip-9.0.1-py2.py3-none-any.whl
Collecting setuptools
Downloading setuptools-38.5.1-py2.py3-none-any.whl (489kB)
100% |████████████████████████████████| 491kB 257kB/s
Collecting wheel
Using cached wheel-0.30.0-py2.py3-none-any.whl
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-9.0.1 setuptools-38.5.1 wheel-0.30.0
此时可以看到此时当前目录下多了pip的执行文件
|-- bin
| |-- 2to3
| |-- easy_install
| |-- easy_install-2.7
| |-- get-pip.py
| |-- idle
| |-- pip
| |-- pip2
| |-- pip2.7
| |-- pydoc
| |-- python -> python2
| |-- python2 -> python2.7
| |-- python2.7
| |-- python2.7-config
| |-- python2-config -> python2.7-config
| |-- python-config -> python2-config
| |-- smtpd.py
| `-- wheel
|-- include
| `-- python2.7
|-- lib
| |-- libpython2.7.a
| |-- pkgconfig
| `-- python2.7
`-- share
`-- man
源码安装
waiting
链接执行文件
安装完成之后,需要将这两种可执行文件放入环境变量中, 这里有两种方法
1. 将安装路径添加到环境变量中
2. 将可执行文件链接到path下的某个目录
其中第一种方法比较难于管理,因为安装路径下有很多python,并且系统中也自带python。所以这里选择第二种方法,将执行文件放到/usr/bin下(也可以放到其他位置)。
链接之前,先看一下/usr/bin目录下的python和pip的情况
ll /usr/bin/python*
ll /usr/bin/pip*
得到结果
lrwxrwxrwx 1 root root 7 Dec 11 20:40 /usr/bin/python -> python2
lrwxrwxrwx 1 root root 9 Dec 11 20:40 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 7136 Aug 4 2017 /usr/bin/python2.7
-rwxr-xr-x 1 root root 208 Feb 8 22:47 /usr/bin/pip
-rwxr-xr-x 1 root root 208 Feb 8 22:47 /usr/bin/pip2
-rwxr-xr-x 1 root root 208 Feb 8 22:47 /usr/bin/pip2.7
可以看到目录下已经存在python和pip, 这里的pip是我自己安装的可以忽略,系统默认是没有的。但是python是系统默认的,这里需要把它们覆盖掉
执行下面的命令将新的python链接到/usr/bin
ln -sf /data/python-2.7.14/bin/python /usr/bin/python
ln -sf /data/python-2.7.14/bin/pip /usr/bin/pip
ln -sf /data/python-3.6.4/bin/python3 /usr/bin/python3
ln -sf /data/python-3.6.4/bin/pip3 /usr/bin/python3
再次运行之前的命令查看/usr/bin目录下的python和pip的情况, 得到结果
lrwxrwxrwx 1 root root 30 Feb 8 23:13 /usr/bin/python -> /data/python-2.7.14/bin/python
lrwxrwxrwx 1 root root 9 Dec 11 20:40 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 7136 Aug 4 2017 /usr/bin/python2.7
lrwxrwxrwx 1 root root 30 Feb 8 23:16 /usr/bin/python3 -> /data/python-3.6.4/bin/python3
lrwxrwxrwx 1 root root 27 Feb 8 23:13 /usr/bin/pip -> /data/python-2.7.14/bin/pip
-rwxr-xr-x 1 root root 208 Feb 8 22:47 /usr/bin/pip2
-rwxr-xr-x 1 root root 208 Feb 8 22:47 /usr/bin/pip2.7
lrwxrwxrwx 1 root root 29 Feb 8 23:14 /usr/bin/pip3 -> /data/python-3.6.4/bin/pip3.6
可以看到此时执行文件都已经链接到目录下,试着执行python, python3命令是否成功
修改yum
上一步完成之后python的安装已经成功,但是会有一个问题,如果此时执行yum的话会失败。因为yum引用的是老版本的/usr/bin/python,我们已经把它覆盖掉了,所以接下来需要将yum引用到原来的python中去
运行命令
vim /usr/bin/yum
修改首行
#!/usr/bin/python -> #!/usr/bin/python2.7
运行命令
vim /usr/libexec/urlgrabber-ext-down
修改首行
#! /usr/bin/python -> #! /usr/bin/python2.7