Python 烧瓶忽略配置导入
我的基本烧瓶应用程序结构是Python 烧瓶忽略配置导入,python,flask,Python,Flask,我的基本烧瓶应用程序结构是 /.env /config.py /app.py /app/__init__.py 我正在使用python dotenv,/.env的内容是 FLASK_APP = app.py DATABASE_URL = 'postgresql://postgres:postgres@localhost:XXXX/XXXXXXXXX' SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:postgres@l
/.env
/config.py
/app.py
/app/__init__.py
我正在使用python dotenv,/.env的内容是
FLASK_APP = app.py
DATABASE_URL = 'postgresql://postgres:postgres@localhost:XXXX/XXXXXXXXX'
SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:postgres@localhost:XXXX/XXXXXXXXX'
SECRET_KEY = '0123456789'
最后,/app/init.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from config import Config, DevelopmentConfig, ProductionConfig
app = Flask(__name__)
app.config.from_object('config.DevelopmentConfig')
db = SQLAlchemy(app)
migrate = Migrate(app, db)
from app import routes
print(app.config, flush=True)
当我在父文件夹中运行flask时,我收到下面的输出。它在生产模式下运行,即使app.config的打印输出显示正在设置FLASK_ENV和DEBUG等
我做错了什么
$ flask run
* Serving Flask app "kwtr2.py"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
<Config {'ENV': 'production', 'DEBUG': True, 'TESTING': True, 'PROPAGATE_EXCEPTIONS': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'SECRET_KEY': '0123456789', 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31), 'USE_X_SENDFILE': False, 'SERVER_NAME': None, 'APPLICATION_ROOT': '/', 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_COOKIE_SAMESITE': None, 'SESSION_REFRESH_EACH_REQUEST': True, 'MAX_CONTENT_LENGTH': None, 'SEND_FILE_MAX_AGE_DEFAULT': datetime.timedelta(seconds=43200), 'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False, 'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http', 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS': True, 'JSONIFY_PRETTYPRINT_REGULAR': False, 'JSONIFY_MIMETYPE': 'application/json', 'TEMPLATES_AUTO_RELOAD': None, 'MAX_COOKIE_SIZE': 4093, 'CSRF_ENABLED': True, 'DEVELOPMENT': True, 'FLASK_ENV': 'development', 'SQLALCHEMY_DATABASE_URI': 'postgresql://postgres:postgres@localhost:XXXX/XXXXXXXXXXX', 'SQLALCHEMY_TRACK_MODIFICATIONS': False, 'STATIC_FOLDER': 'static', 'TEMPLATES_FOLDER': 'templates', 'SQLALCHEMY_BINDS': None, 'SQLALCHEMY_NATIVE_UNICODE': None, 'SQLALCHEMY_ECHO': False, 'SQLALCHEMY_RECORD_QUERIES': None, 'SQLALCHEMY_POOL_SIZE': None, 'SQLALCHEMY_POOL_TIMEOUT': None, 'SQLALCHEMY_POOL_RECYCLE': None, 'SQLALCHEMY_MAX_OVERFLOW': None, 'SQLALCHEMY_COMMIT_ON_TEARDOWN': False, 'SQLALCHEMY_ENGINE_OPTIONS': {}}>
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
$flask运行
*服务瓶应用程序“kwtr2.py”
*环境:生产
警告:这是一个开发服务器。不要在生产部署中使用它。
改用生产WSGI服务器。
*调试模式:关闭
*继续http://127.0.0.1:5000/ (按CTRL+C退出)
提前谢谢你
Keith您没有在应用程序实例中导入
config
模块:
初始化
从配置导入配置、开发配置、生产配置
app=烧瓶(名称)
app.config.from_object()
# ...
谢谢Gitau,我已经试过了,但在“烧瓶运行”之后仍然会看到“环境:生产”。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from config import Config, DevelopmentConfig, ProductionConfig
app = Flask(__name__)
app.config.from_object('config.DevelopmentConfig')
db = SQLAlchemy(app)
migrate = Migrate(app, db)
from app import routes
print(app.config, flush=True)
$ flask run
* Serving Flask app "kwtr2.py"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
<Config {'ENV': 'production', 'DEBUG': True, 'TESTING': True, 'PROPAGATE_EXCEPTIONS': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'SECRET_KEY': '0123456789', 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31), 'USE_X_SENDFILE': False, 'SERVER_NAME': None, 'APPLICATION_ROOT': '/', 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_COOKIE_SAMESITE': None, 'SESSION_REFRESH_EACH_REQUEST': True, 'MAX_CONTENT_LENGTH': None, 'SEND_FILE_MAX_AGE_DEFAULT': datetime.timedelta(seconds=43200), 'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False, 'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http', 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS': True, 'JSONIFY_PRETTYPRINT_REGULAR': False, 'JSONIFY_MIMETYPE': 'application/json', 'TEMPLATES_AUTO_RELOAD': None, 'MAX_COOKIE_SIZE': 4093, 'CSRF_ENABLED': True, 'DEVELOPMENT': True, 'FLASK_ENV': 'development', 'SQLALCHEMY_DATABASE_URI': 'postgresql://postgres:postgres@localhost:XXXX/XXXXXXXXXXX', 'SQLALCHEMY_TRACK_MODIFICATIONS': False, 'STATIC_FOLDER': 'static', 'TEMPLATES_FOLDER': 'templates', 'SQLALCHEMY_BINDS': None, 'SQLALCHEMY_NATIVE_UNICODE': None, 'SQLALCHEMY_ECHO': False, 'SQLALCHEMY_RECORD_QUERIES': None, 'SQLALCHEMY_POOL_SIZE': None, 'SQLALCHEMY_POOL_TIMEOUT': None, 'SQLALCHEMY_POOL_RECYCLE': None, 'SQLALCHEMY_MAX_OVERFLOW': None, 'SQLALCHEMY_COMMIT_ON_TEARDOWN': False, 'SQLALCHEMY_ENGINE_OPTIONS': {}}>
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)