簡體   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