Kruhové dovozu při vytváření databáze

0

Otázka

Vůbec poprvé, kdy pomocí Baňky, aby vytvořit web app., a já jsem běží do problémů, vytváření databáze. Dostanu chybu:

ImportError: cannot import 'app' from partially initialized module 'website' (most likely due to circular import). (Jinými slovy, nemůžu ani spustit aplikaci tak, že jsem se může dostat na vytváření databáze, můj problém spočívá primárně v získání aplikaci spustit).

To je asi pravda, že to je vzhledem k oběhové dovozu, ale já jsem sledovala spolu s tutoriálu, a dolu nefunguje, i po úplné projekt reorganizace. Pro zajímavost, tohle je jak to vypadá teď:

C:\...flaskProject
     static/
     templates/
          about-page.html
          blog-page.html
          home-page.html
          photography-page.html
     website/
          __init__.py
          modules.py
          routes.py
     app.py

Kód problému pravděpodobně spočívá v app.py a __init__.py,, takže, v tomto pořadí:

from website import app

if __name__ == '__main__'
     app.run(debug=True)

a

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from website import routes

app = Flask(__name__)
# *!* app.config['SECRET_KEY'] =
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite///:database.db'
# app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

Byl jsem běží příkazy python app.py, set FLASK_APP=app.py -> flask runa set FLASK_APP=__init__.py -> flask run. Viděl jsem hodně na zde (a v pythonu dokumentace) o kruhové dovozu, a to dává nějaký smysl. Jen si nemyslím, že se to děje tady, ale je to velmi dobře by mohla být bez mého vědomí. Také jsem se podíval do static/ soubor, který byl zařazen, když jsem s tímto projektem začal v PyCharm jednou jsem vybrané Baňky z menu, ale věřím, že to je irelevantní pro mě, pro teď. Nějaké nápady na kruhové import nárok? Jak jsem to mohl opravit, a veškeré informace, které by mi v této oblasti v budoucnu? Každá pomoc je vítána. Díky moc předem.

flask python
2021-11-23 05:09:08
1

Nejlepší odpověď

1

Jste získali kruhové import chybu, protože částečně inicializaci modulu aplikace (kruhové dovozu). Z app.py při volání from website import appto inicializuje webové stránky modulu.e, __init__.py. V __init__.py, 3. řádek from website import routes je příčinou problémů. Vaše webové stránky modulu nebyla dokončena, že je to import, a vy se pokoušíte importovat trasy z tohoto částečně inicializaci modulu stránky.

3. řádek ve vašem __init__.py měla by být nahrazena něčím jako -

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from website.routes import route1, route2 # This is how it should be


app = Flask(__name__)
# *!* app.config['SECRET_KEY'] =
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite///:database.db'
# app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

Nyní, to nebude snažit inicializovat webové stránky modul znovu. Ale, pokud máte from website import app v routes.py soubor pak navrhuji přesunout tento dovoz do app.py soubor.

from website import app
from website.routes import route1, route2

if __name__ == '__main__':
    app.run(debug=True)
2021-11-23 05:40:09

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................