繁体   English   中英

ImportError:无法从“flask”导入名称“request”

[英]ImportError: cannot import name 'request' from 'flask'

通过 Pycharm 运行 py 文件时,出现以下错误:

ImportError: cannot import name 'request' from 'flask'

Traceback (most recent call last):
  File "/root/PycharmProjects/pythonProject/smilecook-test-L_1-4/resources/token.py", line 2, in <module>
    from flask import request
  File "/root/PycharmProjects/pythonProject/smilecook-test-L_1-4/venv/lib/python3.7/site-packages/flask/__init__.py", line 17, in <module>
    from werkzeug.exceptions import abort
  File "/root/PycharmProjects/pythonProject/smilecook-test-L_1-4/venv/lib/python3.7/site-packages/werkzeug/__init__.py", line 1, in <module>
    from .serving import run_simple as run_simple
  File "/root/PycharmProjects/pythonProject/smilecook-test-L_1-4/venv/lib/python3.7/site-packages/werkzeug/serving.py", line 16, in <module>
    import platform
  File "/usr/lib/python3.7/platform.py", line 116, in <module>
    import sys, os, re, subprocess
  File "/usr/lib/python3.7/subprocess.py", line 155, in <module>
    import threading
  File "/usr/lib/python3.7/threading.py", line 8, in <module>
    from traceback import format_exc as _format_exc
  File "/usr/lib/python3.7/traceback.py", line 5, in <module>
    import linecache
  File "/usr/lib/python3.7/linecache.py", line 11, in <module>
    import tokenize
  File "/usr/lib/python3.7/tokenize.py", line 35, in <module>
    from token import *
  File "/root/PycharmProjects/pythonProject/smilecook-test-L_1-4/resources/token.py", line 2, in <module>
    from flask import request
ImportError: cannot import name 'request' from 'flask' (/root/PycharmProjects/pythonProject/smilecook-test-L_1-4/venv/lib/python3.7/site-packages/flask/__init__.py)

Process finished with exit code 1

这是代码:

from http import HTTPStatus
from flask import request
from flask_restful import Resource
from flask_jwt_extended import (
    create_access_token,
    jwt_refresh_token_required,
    create_refresh_token,
    get_jwt_identity,
    jwt_required,
    get_raw_jwt
)

from utils import check_password
from models.user import User

black_list = set()


class TokenResource(Resource):

    def post(self):

        json_data = request.get_json()

        email = json_data.get('email')
        password = json_data.get('password')

        user = User.get_by_email(email=email)

        if not user or not check_password(password, user.password):
            return {'message': 'username or password is incorrect'}, HTTPStatus.UNAUTHORIZED

        access_token = create_access_token(identity=user.id, fresh=True)
        refresh_token = create_refresh_token(identity=user.id)

        return {'access_token': access_token, 'refresh_token': refresh_token}, HTTPStatus.OK


class RefreshResource(Resource):

    @jwt_refresh_token_required
    def post(self):
        current_user = get_jwt_identity()

        token = create_access_token(identity=current_user, fresh=False)

        return {'token': token}, HTTPStatus.OK


class RevokeResource(Resource):

    @jwt_required
    def post(self):
        jti = get_raw_jwt()['jti']

        black_list.add(jti)

        return {'message': 'Successfully logged out'}, HTTPStatus.OK

据我所知,Flask 请求 object 包含客户端(例如浏览器)发送到应用程序的数据(URL 参数、POST 数据等),如下所述: “从 Z319C3206A7F10C10C17C3B9116D4 导入请求与“导入请求57C3B9116D4”相同“?

您有一个循环导入。 这是因为您的token模块隐藏了标准库模块。 从追溯:

  File "/usr/lib/python3.7/tokenize.py", line 35, in <module>
    from token import *
  File "/root/PycharmProjects/pythonProject/smilecook-test-L_1-4/resources/token.py", line 2, in <module>
    from flask import request

模块tokenize.py正在寻找一个token.py并获取您的文件而不是标准库文件。 它注意到请求的导入是正在处理的导入并且失败。

重命名您的文件token.py

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM