Ich attemping meine Konfigurationseinstellungen in verschiedene Klassen innerhalb einer config.py Datei aufteilen, wie here dokumentiertFlask flask.cli.NoAppException mit App Fabrik
Ich habe mein Projekt in Ordner aufgeteilt wie so :
/bloggy
autoapp.py
config.py
/app
__init__.py
models.py
views.py
/static
/templates
Mein config.py
als
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY') or 'secret key'
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository')
class DevelopmentConfig(Config):
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'db.sqlite3')
class TestingConfig(Config):
TESTING = True
config = {
'development': DevelopmentConfig,
'testing': TestingConfig,
'default': DevelopmentConfig
}
ich meine Flask Anwen autoapp.py
haben eine Anwendung Werksdatei folgt aussieht erstellen Kation aus der gewünschten Umgebungsvariable
import os
from app import create_app
app = create_app(os.getenv('FLASK_CONFIG') or 'default')
Mein app/__init__.py
sieht wie folgt aus:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config
db = SQLAlchemy()
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
db.init_app(app)
return app
Nach dem Ausführen
$ export FLASK_APP=autoapp.py
und
$ export FLASK_DEBUG=1
und Starten des Servers mit:
$ flask run
ich die folgende Fehlermeldung erhalten:
Traceback (most recent call last):
File "/home/jwe/.local/lib/python3.5/site-packages/flask/cli.py", line 178, in __call__
self._flush_bg_loading_exception()
File "/home/jwe/.local/lib/python3.5/site-packages/flask/cli.py", line 166, in _flush_bg_loading_exception
reraise(*exc_info)
File "/home/jwe/.local/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/home/jwe/.local/lib/python3.5/site-packages/flask/cli.py", line 155, in _load_app
self._load_unlocked()
File "/home/jwe/.local/lib/python3.5/site-packages/flask/cli.py", line 170, in _load_unlocked
self._app = rv = self.loader()
File "/home/jwe/.local/lib/python3.5/site-packages/flask/cli.py", line 231, in load_app
rv = locate_app(self.app_import_path)
File "/home/jwe/.local/lib/python3.5/site-packages/flask/cli.py", line 95, in locate_app
'is .py' % module)
flask.cli.NoAppException: The file/path provided (autoapp) does not appear to exist. Please verify the path is correct. If app is not on PYTHONPATH, ensure the extension is .py
Gibt es trotzdem kann ich meine Bewerbung erhalten Sie die Einstellungen zu verwenden, in config.py
gelegt oder sollte Ich gehe einen anderen Weg?
Ich lief in den gleichen Fehler, aber ich hatte eine unnötige "__init __. Py" auf der Stammebene. Stellen Sie sicher, dass Sie das nicht in '/ bloggy' haben. Du bist in '/ bloggy', wenn du' flash run' gehst? – jrc
Ich gab auf und beschloss, die Anwendungsfabrik fallen zu lassen und stattdessen alles in __init__.py zu belassen. –