У меня есть приложение-колба, работающее на локальной машине при запуске flask run
, но оно не работает в AWS EC2.
- В обеих средах есть Ubuntu 16.04 и Python 2.7.
- Оба работают в virtualenv, созданных одинаковым образом и по пути (разные папки только у пользователя).
- Оба имеют одинаковую версию Flask.
- Оба имеют
python-dotenv
и .flaskenv
file и настроены на разработку и отладку. - Оба имеют одинаковую папку проекта (одно и то же git repo) и I
flask run
в одной папке для обоих. - Я определил PORT в
.flaskenv
и я вижу, что в обоих портах определен PORT, в котором работает колба.
Когда я пытаюсь получить один и тот же URL, в EC2 я получаю сообщение об ошибке: NoAppException: Could not import "app.initialize"
Запуск на локальной машине:
$ flask run
* Serving Flask app "app.initialize:web_app" (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://0.0.0.0:5324/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 179-083-368
Журнал:
127.0.0.1 - - [07/Mar/2019 09:10:13] "GET /api/directors/me/info HTTP/1.0" 200 -
Запуск в режиме EC2:
$ flask run
* Serving Flask app "app.initialize:web_app" (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://0.0.0.0:5324/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 104-758-876
Журнал:
127.0.0.1 - - [07/Mar/2019 12:05:42] "GET /api/directors/me/info HTTP/1.0" 500 -
Traceback (most recent call last):
File "/home/myuser/.virtualenvs/myvenv/lib/python2.7/site-packages/flask/cli.py", line 325, in __call__
self._flush_bg_loading_exception()
File "/home/myuser/.virtualenvs/myvenv/lib/python2.7/site-packages/flask/cli.py", line 313, in _flush_bg_loading_exception
reraise(*exc_info)
File "/home/myuser/.virtualenvs/myvenv/lib/python2.7/site-packages/flask/cli.py", line 302, in _load_app
self._load_unlocked()
File "/home/myuser/.virtualenvs/myvenv/lib/python2.7/site-packages/flask/cli.py", line 317, in _load_unlocked
self._app = rv = self.loader()
File "/home/myuser/.virtualenvs/myvenv/lib/python2.7/site-packages/flask/cli.py", line 371, in load_app
app = locate_app(self, import_name, name)
File "/home/myuser/.virtualenvs/myvenv/lib/python2.7/site-packages/flask/cli.py", line 246, in locate_app
'Could not import "{name}".'.format(name=module_name)
NoAppException: Could not import "app.initialize".
Для этого приложения у меня есть настраиваемая команда фляги, и когда я пытаюсь вызвать эту команду для обеих сред, на локальной машине работаютЭто нормально, но в EC2 я получил ошибку No such command
.
Я действительно перепробовал все, что нашел в SO, о проверке правильности импорта, версий пакетов и т. д. В EC2, когда я ipython
, Я могу import app.initialize
, и я даже могу импортировать модели и использовать код моего приложения для запуска вещей, включая функцию команды.
Наконец, если я запускаю это приложение с помощью Gunicorn в EC2, оно работает нормально, но иногдаМне нужно запустить с flask для отладки (это среда песочницы) и мне тоже нужно запускать пользовательские команды.
Есть идеи, что может быть не так в EC2?
Ty All