烧瓶flask.cli.NoAppException与应用程序工厂 [英] Flask flask.cli.NoAppException with app factory
问题描述
我试图把我的配置设置分割成一个config.py文件中的不同类,如 here
我已经将项目分割成如下所示的文件夹:
/ bloggy
autoapp.py
config.py
/ app
__init__.py
models.py
views.py
/ static
/ templates
我的 config.py
看起来如下所示:
$ p $ import os
basedir = os.path.abspath(os.path.dirname(__ file__))
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY')或'secret key'
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir,'db_repository')
$ b $ class DevelopmentConfig(Config):
DEBUG = True
SQLALCHEMY _DATABASE_URI ='sqlite:///'+ os.path.join(basedir,'db.sqlite3')
$ b class TestingConfig(Config):
TESTING = True
$ b $ development':DevelopmentConfig,
'testing':TestingConfig,
'default':DevelopmentConfig
}
我有一个应用程序工厂文件 autoapp.py
从所需的环境变量创建我的Flask应用程序
从应用程序导入os
导入create_app
app = create_app (os.getenv('FLASK_CONFIG')or'default')
我的 app / __init __ .py
如下所示:
from flask import Flask
from flask_sqlalchemy从config导入SQLAlchemy
导入配置
$ b $ db = SQLAlchemy()
$ b def create_app(config_name):
app = Flask(__ name__ )
app.config.from_object(config [config_name])
db.init_ap p(app)
return app
运行后
$ export FLASK_APP = autoapp.py
和
$ export FLASK_DEBUG = 1
并启动服务器:
$ flask run
我得到以下错误: p>
追溯(最近一次调用最后一次):
文件/home/jwe/.local/lib/python3.5/ site-packages / flask / cli.py,第178行,在__call__
self._flush_bg_loading_exception()
文件/home/jwe/.local/lib/python3.5/site-packages/flask /cli.py,第166行,在_flush_bg_loading_exception
reraise(* exc_info)
文件/home/jwe/.local/lib/python3.5/site-packages/flask/_compat.py第33行,重新
提高价值
文件/home/jwe/.local/lib/python3.5/site-packages/flask/cli.py,第155行,在_load_app
self._load_unlocked()
文件/home/jwe/.local/lib/python3.5/site-packages/flask /cli.py,第170行,在_load_unlocked
self._app = rv = self.loader()
文件/home/jwe/.local/lib/python3.5/site-packages/ flask / cli.py,第231行,在load_app
rv = locate_app(self.app_import_path)
文件/home/jwe/.local/lib/python3.5/site-packages/flask/ cli.py,第95行,在locate_app
'是.py'%module)
flask.cli.NoAppException:提供的文件/路径(autoapp)似乎不存在。请确认路径是否正确。如果应用程序不在PYTHONPATH上,请确保扩展名是.py
有没有办法让我的应用程序要使用 config.py
中设置的设置,或者我应该采取不同的方法?
也许添加瓶子应用程序的名称将有所帮助。如下所示:
app.config.from_object(bloggy.config [config_name])
请参阅这里在烧瓶文件。
I'm attemping to split up my configuration settings into different classes within a config.py file, as documented here
I've split my project up into folders like so:
/bloggy
autoapp.py
config.py
/app
__init__.py
models.py
views.py
/static
/templates
My config.py
looks as follows
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
}
I have an application factory file autoapp.py
to create my Flask application from the desired environment variable
import os
from app import create_app
app = create_app(os.getenv('FLASK_CONFIG') or 'default')
My app/__init__.py
looks as follows:
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
After running
$ export FLASK_APP=autoapp.py
and
$ export FLASK_DEBUG=1
and starting the server with:
$ flask run
I get the following error:
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
Is there anyway I can get my application to use the settings laid out in config.py
or should I take a different approach?
Maybe adding the name of the flask application will help. Like following:
app.config.from_object(bloggy.config[config_name])
See here in flask doc.
这篇关于烧瓶flask.cli.NoAppException与应用程序工厂的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!