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

Flask项目导入url_quote报错:无法从werkzeug.urls导入该名称

Flask-OAuthlib导入错误:无法导入'url_quote'的解决办法

错误信息

Traceback (most recent call last):
  File "e:\Documents\Web Dev\Dinkum\backend\app.py", line 2, in <module>
    from flask_oauthlib.client import OAuth
  File "E:\Documents\Web Dev\Dinkum\backend\dinkum\Lib\site-packages\flask_oauthlib\client.py", line 18, in <module>
    from werkzeug.urls import url_quote, url_decode, url_encode
ImportError: cannot import name 'url_quote' from 'werkzeug.urls' (E:\Documents\Web Dev\Dinkum\backend\dinkum\Lib\site-packages\werkzeug\urls.py). Did you mean: 'unquote'?

环境版本

  • Flask-OAuthlib:0.9.6
  • Flask:3.0.2

相关代码片段

from flask import Flask, redirect, request, url_for, session, render_template
from flask_oauthlib.client import OAuth

app = Flask(__name__, template_folder=['backend/templates', 'frontend'], static_folder='backend/static')

解决办法

1. 降级Werkzeug到兼容版本

Flask 3.0.2依赖的Werkzeug版本(≥3.0.0)与Flask-OAuthlib 0.9.6不兼容——Werkzeug 2.1+已将url_quote重命名为quote,导致导入失败。

执行以下命令降级Werkzeug:

pip install werkzeug==2.0.3

2. 替换为维护活跃的OAuth库

Flask-OAuthlib已停止维护,推荐使用官方支持的替代库,比如Authlib:

  • 安装依赖:
pip install authlib
  • 修改代码中的导入:
from flask import Flask, redirect, request, url_for, session, render_template
from authlib.integrations.flask_client import OAuth

app = Flask(__name__, template_folder=['backend/templates', 'frontend'], static_folder='backend/static')

3. 手动修改Flask-OAuthlib源码(临时方案)

若必须保留当前Flask-OAuthlib版本,可直接修改其源码:
打开E:\Documents\Web Dev\Dinkum\backend\dinkum\Lib\site-packages\flask_oauthlib\client.py,将第18行的导入语句替换为:

from werkzeug.urls import quote as url_quote, url_decode, url_encode

注意:此方案仅临时生效,后续更新依赖会覆盖修改,不推荐长期使用。

内容的提问来源于stack exchange,提问作者Utsav Maji

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:32:27