最近学习docker,采用了centos7.5系统,遇到了很多坑。其中之一就是在centos7.5系统中以yum安装Python,其安装路径在/usr/lib和/usr/bin下。安装在这下面有个很大问题就是没法安装setuptools和pip,而对于Python而言pip的重要性就如同yum之于centos。因此,这里采用源码编译安装的方式安装python3.7。
安装前的准备(各种依赖及工具安装)
yum -y install gcc make
yum install libffi-devel
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以libressl代替openssl-devel
对于 Python3.7系统,openssl版本必须高于1.0.2或者libressl必须高于2.64版本。这里以libressl代替系统的openssl,libressl获取地址:https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/
这里以libressl-2.8.0为例,下载后解压并进入目录,然后分别运行以下命令:
./config --prefix=/usr/local/ssl
make & make install
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl扩展centos默认访问库,使可访问libressl库文件
cd /etc/ld.so.conf.d/
新建文件
vim libressl-2.8.0.conf
将以下行加入文件,并保存
/usr/local/ssl/lib运行命令使生效
ldconfig
编辑/etc/profile文件,新增如下环境变量
export LDFLAGS="-L/usr/local/ssl/lib"
export CPPFLAGS="-I/usr/local/ssl/include" //引号内第一个字母是大写i
export PKG_CONFIG_PATH="/usr/local/ssl/lib/pkgconfig"编译安装python3.7
./configure --prefix=/usr/local --enable-shared CFLAGS=-fPIC //配置安装目录,使其安装在/usr/local目录下,这样后面才能成功安装setuptools和pip
make & make install
ln -s /usr/local/bin/python3.7 /usr/local/bin/python //创建快捷方式,是输入python时默认打开python3.7解释器,而不是系统默认的版本
扩展centos默认访问库,使可访问python3.7的库文件
cd /etc/ld.so.conf.d/
新建文件
vim python3.conf
将以下行加入文件,并保存
/usr/local/lib运行命令使生效
ldconfig