前言
在linux中用python的脚本弄一些自动化还是挺方便的,但是linux的python几乎都是2.X版本,比较老了
环境
[root@localhost ~]# cat /proc/version
Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
以上是这篇文章基于的linux环境
默认情况下,Linux会自带安装Python,可以运行python --version命令查看
[root@localhost ~]# python --version
Python 2.7.5
我们使用whereis命令查看下py的默认位置
[root@localhost ~]# whereis python
python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz
[root@localhost ~]# ls -l /usr/bin/python*
lrwxrwxrwx. 1 root root 7 3月 12 21:40 /usr/bin/python -> python2
lrwxrwxrwx. 1 root root 9 3月 12 21:40 /usr/bin/python2 -> python2.7
-rwxr-xr-x. 1 root root 7216 10月 31 2018 /usr/bin/python2.7
看到/usr/bin/python和/usr/bin/python2都是软链接,/usr/bin/python指向/usr/bin/python2,而/usr/bin/python2最终又指向/usr/bin/python2.7。所以运行python/python2/python2.7是一样的
安装python3
可以去python的官网 Python Source Releases | Python.org,找到对应版本下载 (我们以Python 3.6.5为例)
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
上面的地址是海外的,国内下载可能会比较满我这里提供了镜像地址https://mirrors.huaweicloud.com/python/
用国内镜像地址下载
wget https://mirrors.huaweicloud.com/python/3.6.5/Python-3.6.5.tar.xz
准备编译环境(安装依赖)
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
注意:如果python是3.7版本,还需要安装libffi-devel
./configure --prefix=/usr/local/Python-3.6.5
make && make install
--prefix=/usr/local/Python-3.6.5 指定了安装的位置
执行第一步时提示(./configure --enable-optimizations),不要执行,忽略即可(若不小心执行了,则删除解压文件Python-3.6.5.tgz重新解压即可)。执行下图命令会在make && make install 时导致 Could not import runpy module 错误
创建软链接
还记得开始,Linux已经安装了python2.7.5,这里我们不能将它删除,如果删除,系统可能会出现问题。我们只需要按照与Python2.7.5相同的方式为Python3.6.5创建一个软链接即可,我们把软链接放到/usr/local/bin目录下
[root@master Python-3.6.5]# ln -s /usr/local/Python-3.6.5/bin/python3.6 /usr/local/bin/python3
[root@master Python-3.6.5]# ls -l /usr/local/bin/
total 390160
-rwxr-xr-x. 1 root root 65770992 Dec 5 01:44 calicoctl
-rwxr-xr-x. 1 root root 23847904 Dec 5 01:43 etcd
-rwxr-xr-x. 1 root root 17620576 Dec 5 01:43 etcdctl
-rwxr-xr-x. 1 root root 46182400 Dec 5 01:44 helm
-rwxr-xr-x. 1 root root 45838336 Dec 5 01:43 kubeadm
-rwxr-xr-x. 1 root root 46907392 Dec 5 01:44 kubectl
-rwxr-xr-x. 1 root root 153350112 Dec 5 01:43 kubelet
drwxr-xr-x. 2 kube root 71 Dec 5 01:45 kube-scripts
lrwxrwxrwx 1 root root 37 Mar 18 03:54 python3 -> /usr/local/Python-3.6.5/bin/python3.6
配置环境变量
#python环境
export PYTHON_HOME=/usr/local/Python-3.6.5
export PATH=$PYTHON_HOME/bin:$PATH
检查下是否成功
[root@master ~]# python3 -V
Python 3.6.5
问题
pip3 install时报错“pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.”
先安装openssl-dev,然后重新编译安装,只是在编译的过程中加入 --enable-optimizations
ubuntu:
sudo apt-get install libffi-dev
centos7
yum install libffi-devel -y