linux python 调试_一次对linux系统无影响的python3环境搭建过程及思考

这是一位好友写的文章,实操性很强。

背景因素

Linux系统中默认的python版本为Python 2,而根据Python的官方邮件消息,Python 2即将于2020年终止所有的支持。简单的将Python由2升级至3则会有很大的技术风险隐患,因为Linux的一些常用指令,如yum指令,会对python存在依赖。所以我们需要找到一种对linux系统无影响的python3环境搭建过程,而本文即是对此的记录和思考。

搭建过程及思考:

既然决定整个搭建过程的前置条件是对Linux系统无影响,也就限定了不能使用常规的系统目录,那么依据公司的管理规定,则约定将整个java环境搭建在/opt/app目录下。所以也就无需使用root用户,仅使用普通的ppuser用户和环境变量的设置即可完成。

在整个搭建过程中,大致可分成三个步骤,一是原始应用包的编译和构建,二是Python包的环境变量设置,三是Python包的实际部署。

一、 原始应用包的编译和构建

在原始应用包的编译和构建过程中,需要使用root用户和普通的ppuser用户,而在实际部署环节中仅需要使用ppuser用户即可。

1. 下载

登录Python的官网下载python,

https://www.python.org/downloads/

考虑到未来应用的扩展需求,下载Python 3系列的版本Python-3.7.0.tgz。

由于一些应用在运行过程中,需要使用ssl库,所以需要预先下载openssl,编译进Python的包内。

从openssl的官网下载安装包,openssl-1.0.2j.tar.gz

http://www.openssl.org/source/openssl-1.0.2j.tar.gz

2. 预安装包

由于在编译过程中存在依赖,所以需要使用root用户预安装依赖包。

yum install zlib-devel.x86_64yum install libffi-develyum install sqlite-devel

3. 上传至服务器

将Python-3.7.0.tgz和openssl-1.0.2j.tar.gz上传至服务器的/opt/app/software目录下。

安装openssl依赖库,使用root用户,执行以下指令,

cd /opt/app/softwaretar -xzf openssl-1.0.2j.tar.gzcd openssl-1.0.2j./config --prefix=/usr/local/openssl -fPIC no-gost no-shared no-zlibmake dependmakemake install

此时需要注意的是在./config命令中需要指定安装目录,即--prefix参数描述的,至于其他的参数,则可以简单复制即可。

安装Python包,使用ppuser用户,在服务器的/opt/app/software目录下创建python-3.7.0文件夹,将Python-3.7.0.tgz上传至此目录。

使用ppuser用户,分别执行以下指令,对Python 3进行配置:

mkdir -p /opt/app/python-3.7.0cd /opt/app/software/python-3.7.0tar xvf Python-3.7.0.tgzcd Python-3.7.0./configure --prefix=/opt/app/python-3.7.0 --enable-shared CFLAGS=-fPIC --with-ssl --with-openssl=/usr/local/openssl --enable-loadable-sqlite-extensions

这里需要注意的是:

--prefix需要指定为/opt/app/python-3.7.0,否则会安装到操作系统的默认目录中。

--with-ssl --with-openssl=/usr/local/openssl,需要与之前安装openssl的路径保持一致

--enable-loadable-sqlite-extensions,是表示启用sqllite扩展内容,可以使用sqlite的库,方便后续一些应用的操作。

为了支持ssl,还需要执行以下操作。

cd Modulesvi Setup.dist

在这里,需要修改Setup.dist文件,启用ssl的设置。去掉注释,启用以下内容,

_socket socketmodule.cSSL=/usr/local/ssl_ssl _ssl.c \-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \-L$(SSL)/lib -lssl -lcrypto

编译并安装

makemake install

注意:make install时会报错,属于正常情况,因为ppuser是普通用户,没有系统权限。这是符合预期的,因为我们并不期望修改系统默认的python包。

到此,python 3的安装包的编译、安装环节已经完成,进行测试验证。

pythonimport sslimport sqlite3

二、 Python包的环境变量设置和部署

1. 环境变量设置

众所周知,linux系统各个应用程序的运行都是依靠环境变量设置的内容,所以我们既然不期望修改系统默认的python 2.6,就应该为python 3.7采用独立的环境变量配置,

cd /opt/app/python-3.7.0touch python-3.7.envvi python-3.7.env

在python-3.7.env中填写如下内容:

# set python 3.7 envPYTHON_HOME=/opt/app/python-3.7.0PATH=$PYTHON_HOME/bin/:$PATHexport PATHLD_LIBRARY_PATH=$PYTHON_HOME/lib:$LD_LIBRARY_PATHexport LD_LIBRARY_PATHPYTHONPATH=$PYTHON_HOME/lib/python3.7/site-packagesexport PYTHONPATH

这个环境变量设置脚本的目的是声明python的bin目录放入PATH,声明动态链接库、以及声明python所需的包路径。

2. 创建python软链接

在平时使用中,大家更习惯使用python、pip进行安装python的包,而不是python3、pip3,所以需要使用软链接进行指向,

cd /opt/app/python-3.7.0/binln -s python3 pythonln -s pip3 pip

3. python打包

我们将已经编译好,且配置了环境变量文件的python-3.7.0进行打包,方便后续的实际部署使用。

/opt/app/software/python-3.7.0tar cvf Python-3.7.0.tar python-3.7.0

此时,生成的Python-3.7.0.tar包就是实际部署的包文件。

三、 Python包的实际部署

1. 上传文件

在需要部署的服务器上,创建相应的目录文件。

mkdir -p /opt/appcd /opt/app

上传Python-3.7.0.tar包至此目录,执行解压缩Python-3.7.0.tar包,

tar xvf python-3.7.0.tar

则在/opt/app下,生成了相应的python-3.7.0目录,

022098a31f7f6554fe23d15ad745a004.png

2. 执行并测试

此时,当用户登陆操作系统时,使用的是python 2的程序,可通过如下指令查看。

python -V

结果返回,

2b01dbf4ace449c29850179176770d9b.png

这种情况下,并不影响linux原有环境命令的任何使用。当用户需要执行python3程序时,可通过以下指令执行首先声明环境变量,

. /opt/app/python-3.7.0/python-3.7.env

然后执行具体的python指令检查版本,

python -V

结果返回,

000113fe762a322a68114207d4734fb1.png

思考

至此,实现了Linux系统中默认的python2版本与我们引入的python3版本同时并存而互不影响。

从这里面可以看出,虽然我们在编译、环境变量脚本、打包等环节的操作较为繁琐,但一旦进行实际部署时,就仅需要上传文件后解压缩即可。

这就体现了在平时设计中将有限次数的操作详细化、反复重复的操作的精简化。同时,若哪天不再使用python3程序时,仅需将/opt/app/python-3.7.0文件夹直接删除即可。

近期热文:

《PLSQL Developer几个可能的隐患》

《从70万字SRE神作提炼出的7千字精华文章》

《从数据误删到全量恢复的惊险记录》

《last_load_time和last_active_time的选择》

《truncate分区表的操作,会导致全局索引失效?》

《NUMBER长度的误解》

《decode函数再挖掘》

《《decode函数的妙用》网友的两个问题解答》

《decode函数的妙用》
《公众号600篇文章分类和索引》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值