RHEL7 安装python3.7.6

 

先去python官网下载python3的源码包,网址:https://www.python.org/downloads/release/python-376/,下载Gzip包:

python3.7需要的openssl的版本为1.0.2或者1.1.x,OpenSSL 1.0.1e-fips 11 Feb 2013版本将导致python3和pip3安装后无法下载第三方库,所以在RHEL7上安装python3之前必须先安装合适版本的openssl。可以看我另一篇博客文章,有具体操作过程。

 

第一步:将下载的包解压后放到Linux的/usr/local目录下:

[root@linuxprobe 桌面]# mv /home/kivy/Python-3.7.6/ /usr/local/

第二步:确定安装目录。

/home/kivy/Python-3.7.6/是我们解压后的目录,/usr/是要编译、安装的目录。

 

第三步:在安装python3之前先安装一些依赖包,再进入到/home/kivy/Python-3.7.6/目录,然后配置编译:

yum -y install gcc
yum -y install zlib zlib-devel
yum -y install bzip2 bzip2-devel
yum -y install ncurses ncurses-devel
yum -y install readline readline-devel
yum -y install openssl openssl-devel
yum -y install openssl-static
yum -y install xz lzma xz-devel
yum -y install sqlite sqlite-devel
yum -y install gdbm gdbm-devel
yum -y install tk tk-devel
yum -y install libffi libffi-devel

接下来切换目录,然后配置编译:

[root@linuxprobe local]# cd /usr/local/Python-3.7.6/
[root@linuxprobe Python-3.7.6]# ./configure --prefix=/usr/ --enable-shared CFLAGS=-fPIC --enable-optimizations --with-openssl=/usr/

这里加上--enable-shared和-fPIC之后可以将python3的动态链接库编译出来,默认情况编译完lib下面只有python3.xm.a这样的文件,python本身可以正常使用,但是如果编译第三方库需要python接口则会报错;所以这里建议按照上面的方式配置。--enable-optimizations 是优化选项,加上这个编译后,性能有 10% 左右的优化。如果没有加上–with-ssl参数,默认安装的软件涉及到ssl的功能不可用,但pip3安装模块的过程是需要ssl模块的,若不指定,后期使用pip时就麻烦了。这里我们选择的安装目录是/usr/,因为安装在其他地方可能还要进行一些其他设置。--with-openssl=/usr/参数指定了openssl的位置。

第四步:编译源码并安装

[root@linuxprobe Python-3.7.6]# make && make install
……
Successfully installed pip-19.2.3 setuptools-41.2.0
[root@linuxprobe Python-3.7.6]# python
Python 2.7.5 (default, Feb 11 2014, 07:46:25) 
[GCC 4.8.2 20140120 (Red Hat 4.8.2-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

可以看到,最后一句提示已经安装了pip-19.2.3和setuptools-41.2.0。

输入python命令可以看到,默认的python版本还是2.7.5的。

第五步:修改配置

输入pip提示找不到,但输入pip3可以找到,通过which pip3命令可以发现,指向/usr/bin/pip3。我们通过如下命令在/usr/bin/目录中创建软连接,使pip指向pip3:

[root@linuxprobe bin]# ln -s /usr/bin/pip3 /usr/bin/pip

 

默认的python版本还是2.7.5的,所以我们要删除原来的名为python的软链接,重新建立一个,使其指向python3:

[root@linuxprobe bin]# rm /usr/bin/python
[root@linuxprobe bin]# ln -s /usr/bin/python3 /usr/bin/python

试一下python看输出的版本:

[root@linuxprobe bin]# python
/usr/bin/python3.7: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

发现上面这么个提示,而且无论输入python,还是python3、python3.7、pip、pip3,都会得到这么个结果。这是因为python3.7运行时没有加载到libpython3.7m.so.1.0 这个库文件,将其复制到响应目录就行了:

[root@linuxprobe lib]# cp libpython3.7m.so.1.0 /usr/lib64/

由于yum不能正常用了,必须修改/usr/bin/yum的第一行,使其仍然使用系统自带的python2:

[root@linuxprobe bin]# vi /usr/bin/yum

将第一行改为:

 

 

你可能感兴趣的:(REHL7,运维)