python3启动web服务引发的一系列问题

背景

在某行的实施项目,需要使用python3环境运行某些py脚本。
由于行内交付的机器已自带python3 ,没有采取自行安装python3,但是运行python脚本时报没有tornado module。

错误信息

ModuleNotFoundError:No module named ‘tornado’.

python3启动web服务引发的一系列问题汇总

错误信息很明确,缺少模块,那就使用pip安装模块。

执行 pip install tornado
居然报pip命令不存在。

执行 pip3 install tornado
还是报pip3命令不存在

解决问题

首要解决的问题是安装pip,pip的安装,由于行内系统是麒麟v10版本。
为了确保一次安装成功,我们直接采用源码安装方式安装pip。

安装pip3

首先,下载pip源码,地址:https://pypi.org/project/pip/
传包到服务器,解压:tar -zxvf pip-23.0.1.tar.gz
cd pip-23.0.1
执行sudo python3 setup.py install

使用pip 安装tornado

pip安装好以后,使用pip、pip3命令安装tornado。

Pip3 安装完毕后,发现使用pip3 install tornado 报错,使用whl包安装,同样报错:
ERROR: tornado-6.2-cp37-abi3-cp39-manylinux1_x86_64.whl is not support wheel on this platform
试了好几个版本,都是报同样的错。

由于系统特殊性,下载了几个wheel格式包都无法安装成功。
于是又得采取源码安装方式。

只能使用源码方式安装:下载tornado源码,地址:https://pypi.org/project/tornado/

于是解压:tar -zxvf tornado-6.2.tar.gz
进入源码包:cd tornado-6.2/
安装模块:sudo python3 setup.py install

虽然tornado 安装好了,但是我们的python脚本还是执行失败了。
最后没办法只能,将脚本内:import 过的module 挨个检查一遍,缺失的就继续采用源码安装。

最后

如果操作系统是centos、redhat 系列,建议直接采用anaconda 一键安装python环境,该软件安装完后,会将常用python 模块也附带安装掉。

扩展:用python最新版本安装web3后调试错误原因和解决方法

由于调试web3,安装了最新版本的python3.11 ,用命令安装 pip install web3,提示安装错误,无法完成。仔细观察根据错误提示发现是 VC++14没有安装的原因,根据提示从微软官方下载vs_BuildTools并单独安装VC++14如下图

python3启动web服务引发的一系列问题汇总

安装后重启系统,再运行 pip install web3 安装成功。 用 pip list 命令查看 已经有了web3模块.

开始调试web3 . 在python终端 输入 from web3 inport Web3 出现错误提示看最后一条:

导入错误:无法从"inspect"(C:\Users\Swapn\AppData\Local\Programs\Python\Python311\Lib\inspect.py)导入名称"getargspec"

根据提示查看inspect.py文件,确实查不到“getargspec”名字,发现有getfullargspec函数,可能是新版本更改了函数名字,就将getargspec替换为getfullargspec,保存。在调试 没有错误,调试成功。

总结:

新版本python3.11安装web3前,先下载vs_BuildTools并单独安装VC++14后重启在命令 pip install web3 安装成功。调试web3,需要将库里的inspect.py文件将getargspec替换为getfullargspec即可正常运行了。

原文地址:https://blog.csdn.net/li396864285/article/details/129169682

相关文章: