内网安装fastapi引起的一系列问题解决

1. pip直接安装fastapi

本地初始Python环境:Python3.7.5
问题解决后使用Python环境:Python3.8.9

1.1 安装报错

  • 国内源报错,https请求超时;
  • 包冲突报错,如图所示

img_v2_398962e7-1b9a-4edf-b537-996ca9552e7g.jpg

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

img_v2_d7712c1e-bcda-4491-ba20-2de8f085dafg.jpg
image.png

2. ModuleNotFoundError: No module named '_ssl'

2.1 程序运行报错(网图)

通过提示可以看出是缺少了ssl,随进行了安装。
image.png

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的)
image.png

2.2.2.2 确认系统版本

通过以下命令确认是CentOS6.10

cat /etc/issus

image.png

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版本优先使用趋近于最新版的稳定版本;

参考链接

posted @ 2023-06-02 19:16  爱吃蚊子爱子钰  阅读(1242)  评论(0编辑  收藏  举报