【发布时间】:2019-03-07 21:41:10
【问题描述】:
我有一个烧瓶应用程序,它在运行 flask run 时在本地计算机上运行,但它没有在 AWS EC2 中运行。
- 两个环境都有 Ubuntu 16.04 和 Python 2.7。
- 两者都在以相同方式和路径创建的 virtualenvs 中运行(只有用户的文件夹不同)。
- 两者都有相同的 Flask 版本。
- 两者都有
python-dotenv和.flaskenv文件并设置为 开发和调试。 - 两者都有相同的项目文件夹(相同的git repo)和我
flask run两者都在同一个文件夹中。 - 我在
.flaskenv中定义了端口,我可以看到端口已定义 那里是烧瓶在两者中运行的地方。
当我尝试获取相同的 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 并且我什至可以导入模型并使用我的应用程序代码运行事物,包括命令函数。
最后,如果我在 EC2 中使用 Gunicorn 运行此应用程序,它可以正常工作,但有时我需要使用 flask 运行进行调试(它是沙盒环境),并且我还需要运行自定义命令。
知道 EC2 可能出了什么问题吗?
全部
【问题讨论】:
标签: python flask amazon-ec2