Python 我能';不从烧瓶中的初始输入?
我想将socketio从主应用程序文件夹中的init.py文件导入控制器文件夹中的主控制器,但我无法执行此操作,出现一个错误,显示: 导入错误:无法导入名称socketio 这是我的应用程序树:Python 我能';不从烧瓶中的初始输入?,python,flask,Python,Flask,我想将socketio从主应用程序文件夹中的init.py文件导入控制器文件夹中的主控制器,但我无法执行此操作,出现一个错误,显示: 导入错误:无法导入名称socketio 这是我的应用程序树: ├── add_permissions.txt ├── db_init.py ├── develop │ ├── config.py │ ├── controllers │ │ ├── abonent.py │ │ ├── events.py │ │ ├── __init
├── 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
中代码行的位置,以实现快速修复。但这仍然不是一个好的做法,代码将在将来进行重构。你是对的,现在它可以工作了。我复制了创建应用程序功能上方的面板路径,应用程序启动时没有出现错误,非常感谢;)。