部署到 Elastic Beanstalk 后出现 ImportError。我们正在运行 Falcon 来制作 API。我已成功使用 EB CLI 来初始化应用程序、创建环境并部署我的代码。我们使用 Python 2.7(目前)。
应用程序/环境的 AWS EB 站点说一切顺利,但是当我向 api 发送请求时,日志显示此错误:
[Wed Nov 30 06:02:25.555507 2016] [:error] [pid 29352] [remote 127.0.0.1:56624] Traceback (most recent call last):
[Wed Nov 30 06:02:25.555524 2016] [:error] [pid 29352] [remote 127.0.0.1:56624] File "/opt/python/current/app/api/app.py", line 12, in <module>
[Wed Nov 30 06:02:25.555549 2016] [:error] [pid 29352] [remote 127.0.0.1:56624] from middlewares import require_json
[Wed Nov 30 06:02:25.555566 2016] [:error] [pid 29352] [remote 127.0.0.1:56624] ImportError: No module named middlewares
[Wed Nov 30 06:02:26.558411 2016] [:error] [pid 29352] [remote 127.0.0.1:60720] mod_wsgi (pid=29352): Target WSGI script '/opt/python/current/app/api/app.py' cannot be loaded as Python module.
在本地我的进口工作得很好。api 的相关部分如下所示:
-api/
-__init__.py #import app
-app.py
-middlewares/
-__init__.py #import require_json
-require_json.py
我的 app.py 文件的第 12 行:
from middlewares import require_json
但是日志一直说这是一个 ImportError。对这里发生的事情有任何想法吗?我很困惑。
至于__init__.py
文件导入模块;这是一个遗留代码库,我不确定改变它的含义是什么,除了测试会失败。
编辑
今天早上我尝试注释掉那些导入行,但这只会让我在下一次导入时出错:
[Wed Nov 30 21:52:00.699228 2016] [:error] [pid 11254] [remote 172.31.8.163:37352] Traceback (most recent call last):
[Wed Nov 30 21:52:00.699245 2016] [:error] [pid 11254] [remote 172.31.8.163:37352] File "/opt/python/current/app/api/app.py", line 15, in <module>
[Wed Nov 30 21:52:00.699270 2016] [:error] [pid 11254] [remote 172.31.8.163:37352] import resources
[Wed Nov 30 21:52:00.699288 2016] [:error] [pid 11254] [remote 172.31.8.163:37352] ImportError: No module named resources
我也完成了本文中推荐的操作。
import sys
sys.path.insert(0, '/opt/python/current/app')