You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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依赖该废弃接口

两种解决思路:

  1. 降级Flask到兼容版本(如Flask 1.x系列):
    pip install flask==1.1.4
    
  2. 升级到维护中的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 17:43:12