当然,我的Flask应用程序可以在我的开发环境中工作,但不能在服务器上工作。以下是相关文件:
|- application
|---- __init__.py
|---- config.py
|---- ...
|- wsgi.py
|- .env
wsgi.py
from application import init_app
app = init_app()
if __name__ == "__main__":
app.run("host=0.0.0.0)
这是application/__init__.py
from flask import Flask
def init_app():
# Initialize the core application
app = Flask(__name__, instance_relative_config=True)
# Select and load config object dynamically based on the value of FLASK_ENV in .env
if app.config["ENV"] == "production":
app.config.from_object("application.config.ProductionConfig")
else:
app.config.from_object("application.config.DevelopmentConfig")
with app.app_context():
return app
最后.env
FLASK_APP=application
FLASK_ENV=development
我已经验证,在我的开发机器上,改变.env
中FLASK_ENV的值如预期的那样工作。在服务器上,不管值是多少,它都会尝试作为生产运行。我错过了什么?
编辑添加这是一个Ubuntu 20服务器在AWS Lightsail上,如果这是重要的。
The files are only loaded by the flask command or calling run(). If you would like to load these files when running in production, you should call load_dotenv() manually.
checkout this
可能添加flask.cli.load_dotenv()
并确保python-dotenv
与pip install python-dotenv
一起安装