Flask 开始失败,并显示“ImportError:无法从 'werkzeug.urls' 导入名称 'url_quote'”

问题描述 投票:0回答:1

我在 gke 集群中工作

需求.txt

Flask==2.0.1
Flask_RESTful==0.3.9
pandas==1.3.5
Requests==2.31.0
Werkzeug==2.3.6

我的代码 api.py

from flask import Flask, request
from flask_restful import Api, Resource
import pandas as pd

app = Flask(__name__)
api = Api(app)

class Apart(Resource):
    def get(self):
        data = pd.read_csv('apart.csv')
        data = data.to_dict('records')
        return {'data' : data}, 200

    def post(self):
        isim = request.args['isim']
        kat = request.args['kat']
        odasayısı = request.args['odasayısı']
        m2= request.args['m2']
        req_data = pd.DataFrame({'isim': [isim],
                  'kat': [kat],
                                  'odasayısı': [odasayısı],
                  'm2':[m2]})
        data = pd.read_csv('apart.csv')
        data = data.append(req_data, ignore_index=True)
        data.to_csv('apart.csv', index=False)
        return ({'message': 'Record successfully added.'}, 200)

class Name(Resource):
    def get(self):
        data = pd.read_csv('apart.csv',usecols=[0])
        data = data.to_dict('records')
        return {'data' : data}, 200

api.add_resource(Name, '/apartname')
api.add_resource(Apart, '/aparts')

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=6767)

以及我的导入错误

Traceback (most recent call last):
  File "/usr/local/bin/flask", line 5, in <module>
    from flask.cli import main
  File "/usr/local/lib/python3.8/site-packages/flask/__init__.py", line 7, in <module>
    from .app import Flask as Flask
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 28, in <module>
    from . import cli
  File "/usr/local/lib/python3.8/site-packages/flask/cli.py", line 18, in <module>
    from .helpers import get_debug_flag
  File "/usr/local/lib/python3.8/site-packages/flask/helpers.py", line 16, in <module>
    from werkzeug.urls import url_quote
ImportError: cannot import name 'url_quote' from 'werkzeug.urls' (/usr/local/lib/python3.8/site-packages/werkzeug/urls.py)

我试过这个

from urllib.parse import quote as url_quote

我还尝试了不同版本的“Flask and Werkzeug”,但没有成功。

为什么 Flask 开始失败并显示“ImportError:无法从 'werkzeug.urls' 导入名称 'url_quote'”?

我也查看了此链接,但找不到解决方案。

python python-3.x flask flask-restful werkzeug
1个回答
0
投票

关闭所有内容并从头开始尝试

Werkzeug==2.2.2

在您的要求.txt中

Flask==2.0.1
Flask_RESTful==0.3.9
pandas==1.3.5
Requests==2.31.0
Werkzeug==2.2.2

我刚刚在我的笔记本上安装了

Werkzeug==2.2.2

pip install Werkzeug==2.2.2
import werkzeug.urls
'url_quote' in dir(werkzeug.urls)

输出

#True

查看

werkzeug.urls

的全部内容
print(dir(werkzeug.urls))

#['BaseURL', 'BytesURL', 'URL', '_URLTuple', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_always_safe', '_bytetohex', '_check_str_tuple', '_codec_error_url_quote', '_decode_idna', '_encode_idna', '_fast_quote_plus', '_fast_url_quote', '_fast_url_quote_plus', '_hexdigits', '_hextobyte', '_make_encode_wrapper', '_make_fast_url_quote', '_scheme_re', '_to_iri_unsafe', '_to_str', '_to_uri_safe', '_unquote_maps', '_unquote_to_bytes', '_url_decode_impl', '_url_encode_impl', '_url_unquote_legacy', 'codecs', 'iri_to_uri', 'os', 're', 't', 'uri_to_iri', 'url_decode', 'url_decode_stream', 'url_encode', 'url_encode_stream', 'url_fix', 'url_join', 'url_parse', 'url_quote', 'url_quote_plus', 'url_unparse', 'url_unquote', 'url_unquote_plus']
© www.soinside.com 2019 - 2024. All rights reserved.