Flask导入报错:无法导入_request_ctx_stack及相关问题求助
Flask与Flask-Security新手问题解决指南
问题1:ModuleNotFoundError: No module named 'pkg_resources'
你已通过pip install --upgrade setuptools解决该问题,补充后续若复现的修复方案:
- 强制重装setuptools:
pip install --force-reinstall setuptools
注:
pkg_resources是setuptools内置模块,缺失通常因setuptools未正确安装或版本过旧导致。
问题2:ImportError: cannot import name '_request_ctx_stack' from 'flask'
核心原因是Flask版本与Flask-Security版本不兼容:
- Flask 2.0及以上版本移除了
_request_ctx_stack的直接导出接口 - 旧版Flask-Security依赖该废弃接口
两种解决思路:
- 降级Flask到兼容版本(如Flask 1.x系列):
pip install flask==1.1.4 - 升级到维护中的Flask-Security分支(推荐,原Flask-Security已停止更新):
卸载旧版后安装Flask-Security-Too,代码导入语句无需修改:pip uninstall flask-security -y pip install flask-security-too
问题3:升级distribute时的metadata-generation-failed报错
无需纠结该问题:
- distribute是setuptools的旧分支,现已完全合并到setuptools中,无需单独安装或升级
- 直接放弃操作,使用setuptools即可满足依赖需求
附提供的报错回溯信息
初始pkg_resources缺失报错:
Traceback (most recent call last): File "E:\Python Practice\Role Based Access Control\script.py", line 1, in <module> from app import app ^^^^^^^^^^^^^^^^^^^ File "E:\Python Practice\Role Based Access Control\app\__init__.py", line 25, in <module> from app import routes ^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python Practice\Role Based Access Control\app\routes.py", line 6, in <module> from app.models import User, Role ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python Practice\Role Based Access Control\app\models.py", line 3, in <module> from flask_security import RoleMixin File "E:\Python Practice\Role Based Access Control\myenv\Lib\site-packages\flask_security\__init__.py", line 15, in <module> from .core import ( File "E:\Python Practice\Role Based Access Control\myenv\Lib\site-packages\flask_security\core.py", line 86, in <module> from .totp import Totp File "E:\Python Practice\Role Based Access Control\myenv\Lib\site-packages\flask_security\totp.py", line 18, in <module> from passlib.pwd import genword File "E:\Python Practice\Role Based Access Control\myenv\Lib\site-packages\passlib\pwd.py", line 16, in <module> import pkg_resources ModuleNotFoundError: No module named 'pkg_resources'
升级distribute报错:
Collecting distribute Using cached distribute-0.7.3.zip (145 kB) Installing build dependencies ... done Getting requirements to build wheel ... done Installing backend dependencies ... done Preparing metadata (pyproject.toml) ... error error: subprocess-exited-with-error × Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [6 lines of output] usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: setup.py --help [cmd1 cmd2 ...] or: setup.py --help-commands or: setup.py cmd --help error: invalid command 'dist_info' [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with the package mentioned above, not pip. hint: See above for details.
内容的提问来源于stack exchange,提问作者GOUTHAMA BUDARPU
相关产品推荐
相关产品推荐

