Как переименовать приложение Flask WSGI во время разработки? - PullRequest
0 голосов
/ 09 октября 2019

Я хотел бы знать, как я могу изменить имя приложения Flask WSGI на этапе разработки.

Используя справочное руководство Flask Mega , я смог успешнонастройте приложение "Hello World".
Отступления из учебника:

  1. Используйте pipenv в качестве менеджера виртуальной среды Python (вместо venv)
  2. Название приложения 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 при инициализации и существует ли автоматизированный способ сделать это?

1 Ответ

0 голосов
/ 09 октября 2019

С Pipenv я думаю, что все немного по-другому, когда дело доходит до переменных среды. Как и согласно документации , имеется встроенный механизм для загрузки файла .env:

Если в вашем проекте присутствует файл .env, оболочка $ pipenv и $ pipenvrun автоматически загрузит его, для вас

Так что, я думаю, вам следует переименовать файл с .flaskenv на .env, а затем безопасно удалить зависимость python-dotenv.

...