内网安装fastapi引起的一系列问题解决
1. pip直接安装fastapi
本地初始Python环境:Python3.7.5
问题解决后使用Python环境:Python3.8.9
1.1 安装报错
- 国内源报错,https请求超时;
- 包冲突报错,如图所示
1.2 解决办法
官方提供了离线安装的方式,不依赖CDN,离线安装fastapi:https://pypi.org/project/fastapi-offline/#files
- 使用国内豆瓣的镜像源安装
pip install fastapi-offline -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
2. ModuleNotFoundError: No module named '_ssl'
2.1 程序运行报错(网图)
通过提示可以看出是缺少了ssl,随进行了安装。
2.2 解决办法&过程
2.2.1 安装openssl
- yum直接安装
yum install -y openssl-devel
- 源码编译安装openssl-3.0.1
wget https://www.openssl.org/source/openssl-3.0.1.tar.gz
tar -zxvf openssl-3.0.1.tar.gz
cd openssl-3.0.1
./config --prefix=/usr/local/openssl
参考链接:http://www.gaoshan.me/operation/optech/python/python-linux-ssl.html
2.2.2 【最大的坑】解决yum update提示包冲突报错
2.2.2.1 Depsolving loop limit reached
首先想到的是更新软件源,然后直接安装openssl-devel,执行yum update命令,一直提示报错(图片来自网络,长得一样,提示本地有python2的包,但是可用的有python3的)
2.2.2.2 确认系统版本
通过以下命令确认是CentOS6.10
cat /etc/issus
2.2.2.3 替换适合的软件源
一开始没有确认使用的CentOS版本,导致yum update持续报错并且因为缓存冲突,导致一直无法更新
[C6.10-base]
name=CentOS-6.10 - Base
baseurl=http://vault.epel.cloud/6.10/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
metadata_expire=never
[C6.10-updates]
name=CentOS-6.10 - Updates
baseurl=http://vault.epel.cloud/6.10/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
metadata_expire=never
[C6.10-extras]
name=CentOS-6.10 - Extras
baseurl=http://vault.epel.cloud/6.10/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
metadata_expire=never
[C6.10-contrib]
name=CentOS-6.10 - Contrib
baseurl=http://vault.epel.cloud/6.10/contrib/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=0
metadata_expire=never
[C6.10-centosplus]
name=CentOS-6.10 - CentOSPlus
baseurl=http://vault.epel.cloud/6.10/centosplus/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=0
metadata_expire=never
2.2.2.4 更新软件源
// 清理缓存
yum clean all
// 更新缓存
yum makecache
// 更新软件源
yum update
2.2.3 源码编译安装openssl报错解决
2.2.3.1 报错提示缺少so文件
- 类似报错(当时报错没记录了,当时的浏览器搜索记录)
openssl: error while loading shared libraries: libssl.so.1.1
- 解决办法
网上的办法有两种,采用了第一种
创建软链接
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
2.2.3.2 报错提示异常退出collect2
- 类似报错(当时报错没记录了,当时的浏览器搜索记录)
collect2: error: ld returned 1 exit status Makefile:103: recipe for target ‘ ‘ failed
collect2: ld returned 1 exit status
- 解决办法
通过重新源码安装升级Python版本从3.7.5到3.8.9解决
2.2.3.3 手动安装python3解决openssl编译报错
https://cloud.tencent.com/developer/article/1753254
3. 总结
总结一下几点来梳理本次问题解决的优先顺序和关键点
> 1. 确认操作系统版本,方便后续更新软件源等系统问题排查;
> 2. 解决python pip安装官方镜像源请求超时问题;
> 3. Python版本优先使用趋近于最新版的稳定版本;
参考链接
- /source/index.html
- How to install fastapi on an offline computer
- openssl: error while loading shared libraries: libssl.so.1.1_libssl.so.1.1下载_爱吃鱼的俞阿娟的博客-CSDN博客
- How to fix yum after CentOS 6 went EOL - GetPageSpeed
- 解决报错:collect2: error: ld returned 1 exit status Makefile:103: recipe for target ‘ ’ failed_CODER8R的博客-CSDN博客