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

Flask LoginManager导入失败致应用崩溃,Werkzeug包报错

Flask用户认证导入LoginManager失败问题

为Flask应用实现用户认证时,无法从flask_login导入LoginManager,触发Werkzeug包错误。已尝试安装Werkzeug和Flask-Login旧版本、在多个全新环境测试、弃用Anaconda,均未解决问题。

错误回溯

Traceback (most recent call last):
  File "/Users/erykw/porsche_website/run.py", line 1, in <module>
    from blog import app
  File "/Users/erykw/porsche_website/blog/__init__.py", line 16, in <module>
    from flask_login import LoginManager
  File "/Users/erykw/porsche_website/.venv/lib/python3.11/site-packages/flask_login/__init__.py", line 12, in <module>
    from .login_manager import LoginManager
  File "/Users/erykw/porsche_website/.venv/lib/python3.11/site-packages/flask_login/login_manager.py", line 33, in <module>
    from .utils import _create_identifier
  File "/Users/erykw/porsche_website/.venv/lib/python3.11/site-packages/flask_login/utils.py", line 14, in <module>
    from werkzeug.urls import url_decode
ImportError: cannot import name 'url_decode' from 'werkzeug.urls' (/Users/erykw/porsche_website/.venv/lib/python3.11/site-packages/werkzeug/urls.py)

Pip freeze依赖清单

bcrypt==4.0.1
blinker==1.6.2
click==8.1.7
dnspython==2.4.2
email-validator==2.0.0.post2
Flask==3.0.0
Flask-Bcrypt==1.0.1
Flask-Login==0.6.2
Flask-SQLAlchemy==3.1.1
Flask-WTF==1.2.1
idna==3.4
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.3
SQLAlchemy==2.0.21
typing_extensions==4.8.0
Werkzeug==3.0.0
WTForms==3.0.1

项目目录结构

.
├── FETCH_HEAD
├── README.md
├── blog
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-311.pyc
│   │   ├── forms.cpython-311.pyc
│   │   ├── models.cpython-311.pyc
│   │   └── routes.cpython-311.pyc
│   ├── forms.py
│   ├── models.py
│   ├── routes.py
│   ├── static
│   │   └── main.css
│   └── templates
│       ├── about.html
│       ├── home.html
│       ├── layout.html
│       ├── login.html
│       └── register.html
├── instance
│   └── site.db
└── run.py

解决方案

问题根源是Flask-Login 0.6.2版本与Werkzeug 3.0.0版本不兼容:Werkzeug 3.0.0移除了url_decode方法,而旧版Flask-Login仍在调用它。

解决步骤:

  • 升级Flask-Login到兼容Werkzeug 3.x的版本,执行命令:
    pip install --upgrade flask-login
    
    最新版Flask-Login已适配Werkzeug 3.x的API变更。
  • 若需固定版本,可在requirements.txt中指定兼容组合:
    Flask==3.0.0
    Flask-Login==0.6.3  # 或更高版本
    Werkzeug==3.0.0
    

内容的提问来源于stack exchange,提问作者7ired

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:33:12