(1)打开以下链接
https://www.python.org/downloads/source/
(2)点击第一个链接(最新版安装包)
点击后打开新页面
(3)点击第一项,下载gzip压缩的源码包
python安装之前需要一些必要的模块,如openssl,readline等。
如果没有这些模块后来使用会出现一些问题,比如没有openssl则不支持ssl相关的功能,并且pip3在安装模块的时候会直接报错;没有readline则python交互式界面删除键和方向键都无法正常使用,至于需要什么模块在make完之后python会给出提示,通过提示进行安装即可装全,下面是需要提前预装的依赖:
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
(1)上传python安装包
rz命令将上面下载的python源码包上传到某个目录。
(2)安装
#解压安装包
tar -xvzf Python-3.7.2.tgz
#进入安装包目录cd Python-3.7.2
#配置编译,将安装目录设置为/usr/python#加上--enable-shared和-fPIC,可以将python3的动态链接库编译出来,默认情况编译完lib下面只有python3.xm.a这样的文件,python本身可以正常使用,但是如果编译第三方库需要python接口的比如caffe等,则会报错;所以这里建议按照以下方式配置,另外如果openssl不使用系统yum安装的,而是使用自己编译的比较新的版本可以使用--with-openssl=/usr/local/openssl这种方式指定,后面目录为openssl实际安装的目录,另外编译完还要将openssl的lib目录加入ld运行时目录中即可。
./configure --prefix=/usr/python --enable-shared CFLAGS=-fPIC
#编译源码
make
#执行安装
make install
(1)添加动态链接库路径
如果不进行这步操作,会出现以下问题:error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory。
问题原因:这是因为centos下安装python3没有将编译后python/lib下的文件放入默认库/usr/lib或/lib中,导致初始化时没有加载库文件。
解决办法:将lib添加至配置信息中
cd /etc/ld.so.conf.d
vim python3.conf #默认没有该文件,添加/usr/python/lib到文件中并保存
ldconfig #执行ldconfig命令,使修改生效
(2)设置软连接
ln -s /usr/python/bin/python3.7 /usr/bin/python3
ln -s /usr/python/bin/pip3.7 /usr/bin/pip3
(3)直接将python路径加入环境变量
可以不用设置软连接,直接将python路径加入环境变量
cd /etc/profile.d
vim python3.sh #默认没有该文件,添加以下字段并保存
在python3.sh增加以下两行代码
export PYTHON_HOME=/usr/local/python3
export PATH=$PYTHON_HOME/bin:$PATH
(4)测试是否设置成功
任意地方命令行输入:
python3 -V
pip3 -V