2017-01-04 3 views
2

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?

+1

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

+0

Ich gab auf und beschloss, die Anwendungsfabrik fallen zu lassen und stattdessen alles in __init__.py zu belassen. –

Antwort

1

Vielleicht hilft das Hinzufügen des Namens der Kolbenanwendung. Wie folgt:

Siehe here in Kolben doc.