Я хотел бы знать, как я могу изменить имя приложения Flask WSGI на этапе разработки.
Используя справочное руководство Flask Mega , я смог успешнонастройте приложение "Hello World".
Отступления из учебника:
- Используйте
pipenv
в качестве менеджера виртуальной среды Python (вместо venv
) - Название приложения
astronomer.py
.
Теперь я хочу построить поверх существующего приложения и настроить код в соответствии с моими требованиями;начиная с имени приложения, которое я определил в файле .flaskenv
как FLASK_APP
env var. Соответственно, я обновил имя скрипта Python корневого уровня с astronomer.py
(в учебнике) до galielo.py
(для моего использования). После изменения соответствующего значения FLASK_APP
и перезапуска сервера колб через $ pipenv run flask run
приложение вылетает со следующей ошибкой:
$ pipenv run flask run [12:29:33]
* Serving Flask app "astronomer.py" (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 302-012-958
127.0.0.1 - - [09/Oct/2019 12:29:57] "GET / HTTP/1.1" 500 -
Traceback (most recent call last):
File "/Users/kshitij10496/.local/share/virtualenvs/galileo-iQPdbs28/lib/python3.7/site-packages/flask/cli.py", line 240, in locate_app
__import__(module_name)
ModuleNotFoundError: No module named 'astronomer'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/kshitij10496/.local/share/virtualenvs/galileo-iQPdbs28/lib/python3.7/site-packages/flask/cli.py", line 338, in __call__
self._flush_bg_loading_exception()
File "/Users/kshitij10496/.local/share/virtualenvs/galileo-iQPdbs28/lib/python3.7/site-packages/flask/cli.py", line 326, in _flush_bg_loading_exception
reraise(*exc_info)
File "/Users/kshitij10496/.local/share/virtualenvs/galileo-iQPdbs28/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/Users/kshitij10496/.local/share/virtualenvs/galileo-iQPdbs28/lib/python3.7/site-packages/flask/cli.py", line 314, in _load_app
self._load_unlocked()
File "/Users/kshitij10496/.local/share/virtualenvs/galileo-iQPdbs28/lib/python3.7/site-packages/flask/cli.py", line 330, in _load_unlocked
self._app = rv = self.loader()
File "/Users/kshitij10496/.local/share/virtualenvs/galileo-iQPdbs28/lib/python3.7/site-packages/flask/cli.py", line 388, in load_app
app = locate_app(self, import_name, name)
File "/Users/kshitij10496/.local/share/virtualenvs/galileo-iQPdbs28/lib/python3.7/site-packages/flask/cli.py", line 250, in locate_app
raise NoAppException('Could not import "{name}".'.format(name=module_name))
flask.cli.NoAppException: Could not import "astronomer".
Отладка
- После входа в виртуальный env и проверки значения env var
FLASK_APP
я получаю старое значение astronomer.py
. Это объясняет, почему приложение не запускается. Тем не менее, я не могу понять, почему это происходит? - Я даже пытался использовать приложение «eager-loading», используя:
$ pipenv run flask run --eager-loading
Тем не менее, приложение не запускается с тем же сообщением об ошибке, конечно.
Мне удалось решить эту проблему вручную, отключив env var FLASK_APP
из виртуального env и перезапустив колбу-сервер. Мне любопытно узнать, почему приложение не загружает файл .flaskenv
при инициализации и существует ли автоматизированный способ сделать это?