最近对需要在一台内网环境的服务器上离线手动安装python3,操作系统为ubuntu16.04,遇到的问题特此记录
问题描述
在python导入模块sqlite3和openssl过程中出现如下错误:
手动编译python3过程中出现以下错误:
这些错误说明了以下几点:
-
ssl相关的库文件libssl.so.1.1, libcrypto.so.1.1未找到
-
sqlite3等模块相关文件未找到无法安装
-
ssl模块由于库文件无法找到的原因,未能成功安装
那么我们一一解决以上问题。
1 手动安装openssl
从openssl官网(https://www.openssl.org/source/)下载 openssl-1.1.1i.tar.gz
1.1 编译安装
进入文件下载的路径并执行命令:
tar -zxvf openssl-1.1.1i.tar.gz
cd openssl-1.1.1i
./config --prefix=/usr/local/openssl
make
sudo make install
1.2 执行命令
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl #建立软连接
cd /usr/local/openssl
ldd /usr/local/openssl/bin/openssl
cat '/usr/local/openssl/lib' >> /etc/ld.so.conf
ldconfig
export OPENSSL=/usr/local/openssl/bin #添加环境变量
export PATH=$OPENSSL:$PATH:$HOME/bin
1.3 查看版本
openssl version
正常显示版本则安装完成!
1.4 建立软链接
然后我们发现第一个问题还未解决,原因是/usr/lib/
下还没有openssl相关的库文件,我们通过软链接解决:
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
那么第一个问题得以解决。
2 手动安装sqlite3
执行以下命令下载 sqlite-3.5.6 源码:
wget http://www.sqlite.org/sqlite-3.5.6.tar.gz
2.1 编译安装
tar -xzvf sqlite-3.5.6.tar.gz
cd sqlite-3.5.6
./configure --prefix=/usr/local/sqlite3
make
sudo make install
安装完成后目录在/usr/local下
2.2 查看版本
sqlite3 -version
正常显示版本则安装完成!
3 手动安装python3
执行以下命令下载 python3.6.9 源码:
wget https://www.python.org/ftp/python/3.6.9/Python-3.69.tgz
3.1 编译安装
cd Python-3.6.9
LD_RUN_PATH=/usr/local/sqlite3/lib
export LDFLAGS="-L/usr/local/sqlite3/lib -L/usr/local/openssl/lib"
export CPPFLAGS="-I /usr/local/sqlite3/include -I /usr/local/openssl/include"
export PKG_CONFIG_PATH="/usr/local/openssl/lib/pkgconfig"
./configure --prefix=/usr/local/python3.6 --enable-shared CFLAGS=-fPIC --with-openssl=/usr/local/openssl
make
sudo make install
sudo sh -c "echo '/usr/local/python3.6/lib' >> /etc/ld.so.conf"
以上命令将sqlite3的目录加入python3的编译环境变量,使得python3编译过程中能够正确找到sqlite3的库文件路径,问题2,3得以解决。
3.2 建立软链接
sudo mv /usr/bin/python3 /usr/bin/python3.bk
sudo ln –s /usr/local/python3/bin/python3.6 /usr/bin/python3
3.3 查看版本
python3 --version
显示Python 3.6.9
则安装成功。
4 查看结果
执行 python3
,如显示如下结果则成功:
参考文章
https://blog.youkuaiyun.com/moyi100/article/details/81909613
https://blog.youkuaiyun.com/zd147896325/article/details/80092563
https://blog.youkuaiyun.com/qq_42805358/article/details/103991134
https://blog.youkuaiyun.com/may0324/article/details/84590174
(全文完)