Ошибка импорта сокета Flask-Io для другого файла

#flask #flask-socketio

Вопрос:

У меня возникли проблемы с импортом сокета в один из моих файлов

     This is my folder structure (myapp is a folder)
    
        myapp
         -> __init__.py
         -> app.py
        run.py
 
 #run.py
from myapp import socketio, app
socketio.run(app, host='myip', port='2002', debug=True)
 
 #__init__.py
from flask import Flask
from flask_socketio import SocketIO
import eventlet
import json
from myapp.app import bp

app = Flask(__name__)
app.register_blueprint(bp)
socketio = SocketIO(app, async_mode='eventlet')
 
 #app.py
from flask import Blueprint
from myapp import socketio

bp = Blueprint('bp', __name__)
@bp.route('/')
@bp.route('/home')
def home():
   return '<html><body><h1>Hello, World!</h1></body></html>
 

Ошибка, которую я в конечном итоге получаю, заключается в следующем

 ImportError: cannot import name 'socketio' from 'myapp' (myfilepathmyapp__init__.py)
 

Я надеялся поместить содержимое сокета в другой файл, и я не уверен, почему это не позволяет мне импортировать его. Я думал, что у него не будет никаких проблем, так как у него не было никаких проблем с импортом для run.py файл.

Комментарии:

1. Ваш __init__.py файл импортируется app.py до того, как он создаст socketio объект. Таким app.py образом , вы никогда не сможете импортировать socketio , это циклическая зависимость.