У меня проблема при попытке загрузить пользовательские Flask объекты разработки.
Это моя Flask структура приложения /home/sincorchetes/Projects/flask/my_app
:
├── app.py
├── __init__.py
├── instance
│ └── config.cfg
├── __pycache__
│ ├── app.cpython-37.pyc
│ └── __init__.cpython-37.pyc
└── static
├── css
├── images
└── js
Я установил это в app.py
from flask import Flask
import os
app = Flask(__name__,instance_path=os.getcwd() + '/instance/')
app.config.from_pyfile('config.cfg')
app.config.from_object('config.DevelopmentConfig')
@app.route('/')
def hello_world():
return 'Hello to the World of Flask!'
if __name__ == '__main__':
app.run()
Я запускаю:
cd /home/sincorchetes/Projects/flask/my_app
export FLASK_APP=app.py
flask run
Я получаю:
* Serving Flask app "app.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
Traceback (most recent call last):
File "/home/sincorchetes/Projects/flask/bin/flask", line 8, in <module>
sys.exit(main())
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/flask/cli.py", line 966, in main
cli.main(prog_name="python -m flask" if as_module else None)
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/flask/cli.py", line 586, in main
return super(FlaskGroup, self).main(*args, **kwargs)
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/click/decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/flask/cli.py", line 848, in run_command
app = DispatchingApp(info.load_app, use_eager_loading=eager_loading)
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/flask/cli.py", line 305, in __init__
self._load_unlocked()
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/flask/cli.py", line 330, in _load_unlocked
self._app = rv = self.loader()
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/flask/cli.py", line 388, in load_app
app = locate_app(self, import_name, name)
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/flask/cli.py", line 240, in locate_app
__import__(module_name)
File "/home/sincorchetes/Projects/flask/projectio/app.py", line 7, in <module>
app.config.from_pyfile('config.cfg')
File "/home/sincorchetes/Projects/flask/lib64/python3.7/site-packages/flask/config.py", line 131, in from_pyfile
with open(filename, mode="rb") as config_file:
FileNotFoundError: [Errno 2] Unable to load configuration file (No such file or directory): '/home/sincorchetes/Projects/flask/my_app/config.cfg'
Почему требуется каталог приложений "root" и избежать instance_path
установить в заголовке файла?