python3.11 flask、flask-script 常见错误分析及解决

作者: tww844475003 分类: Python 发布时间: 2024-05-28 17:54

flask-script 使用过程中遇到问题,提示没有flask._compat模块

from flask._compat import text_type
ModuleNotFoundError: No module named ‘flask._compat’

在网上找了很多解决方案,大多都是说flask版本太高了,降级flask版本。

先开始尝试着降级,发现更多依赖报错了。头大

还有些方案说是 flask_script 库的引入方式有问题,硬着头皮试着改。

from flask_script._compat import text_type

改完之后,这里还真不报错了。

运行试试

from flask import _request_ctx_stack

ImportError: cannot import name ‘_request_ctx_stack’ from ‘flask’ (/Users/tangweiwei/PycharmProjects/flask-demo/.venv/lib/python3.11/site-packages/flask/init.py)

flask_script/commands.py,引入错误,错误意思大致是在flask 没有找到 _request_ctx_stack,改,继续改

from flask import request_ctx
运行试试,还是报错

File “/Users/tangweiwei/PycharmProjects/flask-demo/.venv/lib/python3.11/site-packages/flask_script/commands.py”, line 13, in
from flask import request_ctx
ImportError: cannot import name ‘request_ctx’ from ‘flask’ (/Users/tangweiwei/PycharmProjects/flask-demo/.venv/lib/python3.11/site-packages/flask/init.py)

找到 /flask/__init__.py文件,新增下面引入

from .globals import request_ctx

最后还终于成功了,不报错了。

AttributeError: module ‘inspect’ has no attribute ‘getargspec’. Did you mean: ‘getargs’?

笔者python版本3.11

问题原因:
因为inspect.getargspec 在 3.11+ 中已弃用。

解决方法是使用 inspect.fullargspec 代替,并添加 3 个虚拟变量,因为 getfullargspec 将返回 7 个项目而不是 4 个:

args, varargs, keywords, defaults, foo, foo1, foo2 = inspect.getfullargspec(func)
前端开发那点事
微信公众号搜索“前端开发那点事”

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注