Flask 应用程序崩溃(很可能是由于循环导入)

2024-01-16

我在这里遵循了本教程:https://youtu.be/mISFEwojJmE?t=367 https://youtu.be/mISFEwojJmE。这是一个非常简单的 Flask 应用程序,用于为站点创建用户登录和注册页面。到目前为止,本教程中的一切正常:在我的项目中的脚本中导入对象时,我收到此错误。

Error:

flask.cli.NoAppException
flask.cli.NoAppException: While importing "app", an ImportError was raised:

Traceback (most recent call last):
  File "c:\users\dejar\onedrive\coding\themes & applications\002 static template\install\env\lib\site-packages\flask\cli.py", line 240, in locate_app
    __import__(module_name)
  File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\app.py", line 6, in <module>
    from account import routes
  File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\account\routes.py", line 5, in <module>
    from app import app, now
ImportError: cannot import name 'app' from partially initialized module 'app' (most likely due to a circular import) (C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\app.py)

Traceback (most recent call last)
File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\app.py", line 6, in <module>
from account import routes
File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\account\routes.py", line 5, in <module>
from app import app, now
During handling of the above exception, another exception occurred:
File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\env\Lib\site-packages\flask\cli.py", line 338, in __call__
self._flush_bg_loading_exception()
File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\env\Lib\site-packages\flask\cli.py", line 326, in _flush_bg_loading_exception
reraise(*exc_info)
File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\env\Lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\env\Lib\site-packages\flask\cli.py", line 314, in _load_app
self._load_unlocked()
File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\env\Lib\site-packages\flask\cli.py", line 330, in _load_unlocked
self._app = rv = self.loader()
File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\env\Lib\site-packages\flask\cli.py", line 388, in load_app
app = locate_app(self, import_name, name)
File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\env\Lib\site-packages\flask\cli.py", line 245, in locate_app
raise NoAppException(
flask.cli.NoAppException: While importing "app", an ImportError was raised:

Traceback (most recent call last):
File "c:\users\dejar\onedrive\coding\themes & applications\002 static template\install\env\lib\site-packages\flask\cli.py", line 240, in locate_app
__import__(module_name)
File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\app.py", line 6, in <module>
from account import routes
File "C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\account\routes.py", line 5, in <module>
from app import app, now
ImportError: cannot import name 'app' from partially initialized module 'app' (most likely due to a circular import) (C:\Users\dejar\OneDrive\Coding\Themes & Applications\002 Static Template\Install\app.py)
The debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error.
To switch between the interactive traceback and the plaintext one, you can click on the "Traceback" headline. From the text traceback you can also create a paste of it. For code execution mouse-over the frame you want to debug and click on the console icon on the right side.

You can execute arbitrary Python code in the stack frames and there are some extra helpers available for introspection:

dump() shows all variables in the frame
dump(obj) dumps all that's known about the object

我没有发布我的实际应用程序,而是返回并复制了他的应用程序,直到教程中为止,该应用程序在他的 Mac 上运行。但抛出与我在电脑上运行的实际应用程序相同的错误。我还尝试以管理员身份从 VS Code 和命令行使用我的环境。这里是:

文件结构

C:.Root directory for the project
|   app.py
|   tree.txt
|   
+---env
......more evn files and folders
|           
+---static
|   +---css
|   |       normalize.css
|   |       styles.css
|   |       
|   \---js
|           jquery.js
|           
+---templates
|       base.html
|       dashboard.html
|       home.html
|       
+---user
|   |   models.py
|   |   routes.py
|   |   __init__.py
|   |   
|   \---__pycache__
|           routes.cpython-38.pyc
|           __init__.cpython-38.pyc
|           
\---__pycache__
        app.cpython-38.pyc

app.py

from flask import Flask, render_template

# account routes
from user import routes

# create and configure the app, an instance of Flask
app = Flask(__name__)


@app.route("/")
def home():
    return render_template("home.html")


@app.route("/dashboard/")
def dashboard():
    return render_template("dashboard.html")

模型.py

from flask import Flask, jsonify


class User:
    def signup(self):
        user = {"_id": "", "name": "", "email": "", "password": ""}
        return jsonify(user), 200
        # if successful, return status code 200 in json format

路线.py

from flask import Flask, render_template

# import the instance of app from app.py
# from file/module import instance
from app import app

# from folder.file import class
from user.models import User


@app.route("/user/signup", methods=["GET"])
def signup():
    return User().signup()

注:init.py 文件为空


错误信息是什么cannot import name 'app' from partially initialized module 'app'也就是说,当 Python 编译一个文件时,它需要编译另一个文件——要导入的模块。然而,第二个文件also需要读取导入,这是原始的第一个文件。所以 python 不能在不编译另一个的情况下编译一个。

最好的解决方案是简单地导入 app.routesend你的 app.py 文件,如下所示:

from flask import Flask, render_template #imports at the top

#the rest of your code

from app import routes

那应该可以解决问题。

Keep from app import app在你的routes.py的顶部。请记住,没有init您的应用程序目录中的 .py 可能会导致导入困难。

EDIT:

正如以前anakin 所说,导入语句不必位于文件末尾。相反,它可以放置在之后的任何点app已初始化:

app.py:

# create and configure the app, an instance of Flask
app = Flask(__name__)
    
# account routes
from user import routes
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask 应用程序崩溃(很可能是由于循环导入) 的相关文章

  • 将 github 上的包安装到 Spyder 中

    我一直在尝试安装并导入mpl finance来自 github 的包 在我的 Spyder 环境中没有成功 我努力了 pip install e git https github com matplotlib mpl finance git
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • ipython/ pylab/ matplotlib安装和初始化错误

    我在 OS X El Captain 上安装了 matplotlib anaconda ipython 然而 即使在尝试以所有可能的方式设置环境变量之后 我仍无法启动 ipython shell pylab 版本 这是错误 ImportEr
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • H2O服务器崩溃

    去年我一直在使用 H2O 我已经厌倦了服务器崩溃 我已经放弃了 夜间发布 因为它们很容易被我的数据集崩溃 请告诉我在哪里可以下载稳定的版本 Charles 我的环境是 Windows 10 企业版 内部版本 1607 具有 64 GB 内存
  • Python 3 列表列表中的列表理解以转换类型

    考虑以下列表 list1 1 1 1 2 1 3 2 1 2 2 2 3 要理解字符串列表并将其转换为浮点数 可以使用 list1 0 float i for i in list1 0 但我尝试理解浮点数列表的列表并没有完全起作用 list
  • 字典键中的通配符

    假设我有一本字典 rank dict V 1 A 2 V 3 A 4 正如您所看到的 我在一个 V 的末尾添加了一个 虽然 3 可能只是 V 的值 但我想要 V1 V2 V2234432 等的另一个密钥 我想检查它 checker V30
  • 删除aws beanstalk上的uuid python包

    这是针对所提出问题的后续帖子 问题here https stackoverflow com questions 44421761 flask beanstalk deployment errors 以防万一对其他人有用 自从第一篇文章以来
  • Azure 部署未安装requirements.txt 中列出的Python 包

    这是我第一次将 Flask Web 应用程序部署到 Azure 我跟着这个tutorial https azure microsoft com en us documentation articles web sites python cr
  • tkinter - 使用按钮在帧之间来回切换

    我需要功能 最好是一个功能 当按下下一页和后退按钮时可以在页面之间来回切换 我想这可以通过将布尔变量分配给后退和下一页按钮来完成 不确定是否可以这样做 来确定您是否要前进或后退所有页面的有序列表 需要知道当前升高的框架的索引 索引可用于找出
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • Flask-SocketIO redis 订阅

    我在用着https github com miguelgrinberg Flask SocketIO https github com miguelgrinberg Flask SocketIO实现 WebSocket 服务器 我需要从另一
  • multiprocessing.Queue 中的 ctx 参数

    我正在尝试使用 multiprocessing Queue 模块中的队列 实施 https docs python org 3 4 library multiprocessing html exchang objects Between p
  • 哪种方式最适合Python工厂注册?

    这是一个关于这些方法中哪一种被认为是最有效的问题 Pythonic 我不是在寻找个人意见 而是在寻找惯用的观点 我的背景不是Python 所以这会对我有帮助 我正在开发一个可扩展的 Python 3 项目 这个想法类似于工厂模式 只不过它是
  • Python 3 中 int() 和 Floor() 有什么区别?

    在Python 2中 floor 返回一个浮点值 虽然对我来说并不明显 但我发现了一些解释来澄清为什么它可能有用floor 返回浮点数 对于类似的情况float inf and float nan 然而 在Python 3中 floor 返
  • Seed_data.yaml 文件中有没有办法自动生成第一个模型所依赖的模型?

    我正在使用 Django 2 0 Python 3 7 和 MySql 5 我有以下两个模型 第二个依赖于第一个 class CoopType models Model name models CharField max length 20
  • 为什么 dataclasses.astuple 返回类属性的深层副本?

    在下面的代码中astuple函数正在执行数据类的类属性的深层复制 为什么它不能产生与函数相同的结果my tuple import copy import dataclasses dataclasses dataclass class Dem
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE

随机推荐