Python 我能';不从烧瓶中的初始输入?

Python 我能';不从烧瓶中的初始输入?,python,flask,Python,Flask,我想将socketio从主应用程序文件夹中的init.py文件导入控制器文件夹中的主控制器,但我无法执行此操作,出现一个错误,显示: 导入错误:无法导入名称socketio 这是我的应用程序树: ├── add_permissions.txt ├── db_init.py ├── develop │   ├── config.py │   ├── controllers │   │   ├── abonent.py │   │   ├── events.py │   │   ├── __init

我想将socketio从主应用程序文件夹中的init.py文件导入控制器文件夹中的主控制器,但我无法执行此操作,出现一个错误,显示:

导入错误:无法导入名称socketio

这是我的应用程序树:

├── add_permissions.txt
├── db_init.py
├── develop
│   ├── config.py
│   ├── controllers
│   │   ├── abonent.py
│   │   ├── events.py
│   │   ├── __init__.py
│   │   ├── panel.py
│   │   └── users.py
│   ├── extentions.py
│   ├── forms.py
│   ├── forms.pyc
│   ├── __init__.py
│   ├── models.py
│   ├── plugins.py
│   ├── requests.py
│   ├── send_sms.py
├── init.sh
├── manage.py
我创建应用程序的\uuuu init\uuuuu.py的内容:

from flask import Flask

from develop.controllers.abonent import abonent_route
from develop.controllers.panel import panel_route

from flask_principal import identity_loaded, UserNeed, RoleNeed
from flask_login import current_user

from develop.extentions import (
    login_manager,
    toolbar,
    assets_env,
    cache,
    moment,
    principal
)

from develop.models import (
    db,
    User
)

from flask_socketio import SocketIO
socketio = SocketIO()

def create_app(config_object):

    app = Flask(__name__)
    app.config.from_object(config_object)

    ######## Register Database ########

    db.init_app(app)
    # csrf.init_app(app)

    ######## Register Extentions ########

    login_manager.init_app(app)
    toolbar.init_app(app)
    assets_env.init_app(app)
    moment.init_app(app)
    principal.init_app(app)

    socketio.init_app(app)

    ######## Register Routes ########

    app.register_blueprint(abonent_route)
    app.register_blueprint(panel_route)

    # Identify the users roles
    @identity_loaded.connect_via(app)
    def on_identity_loaded(sender, identity):
        # Set the identity user object
        identity.user = current_user

        # Add the UserNeed to the identity
        if hasattr(current_user, 'id'):
            identity.provides.add(UserNeed(current_user.id))

        # Add each role to the identity
        if hasattr(current_user, 'roles'):
            for role in current_user.roles:
                identity.provides.add(RoleNeed(role.name))

    return app
正如你所看到的,我已经用这个应用启动了socketio,现在没有错误

panel.py内部如果我从develop导入socketio,则错误显示我从develop import socketio或
使用的位置。。导入socketio


有人能告诉我问题出在哪里吗?我该怎么办?

因为
\uuuu init\uuuuuuuuuy.py

from develop.controllers.panel import panel_route
在之前

socketio = SocketIO()
panel.py
中的任何代码与来自开发导入socketio的
或来自。。导入socketio
已执行,在
develope
命名空间中没有名为
socketio
的内容,导入肯定会失败


因此,您应该调整
\uuuu init\uuuu.py
中代码行的位置,以实现快速修复。但这仍然不是一个好的做法,代码将在将来进行重构。

你是对的,现在它可以工作了。我复制了创建应用程序功能上方的面板路径,应用程序启动时没有出现错误,非常感谢;)。