【发布时间】:2020-10-20 05:52:51
【问题描述】:
我一直在尝试通过 Elastic Beanstalk 部署 Python(Flask 框架)后端。
这是我的错误:
126:35532] File "/opt/python/current/app/backend/src/application.py", line 6, in <module>
[Tue Jun 30 00:30:34.763891 2020] [:error] [pid 7666] [remote 172.31.3.126:35532] from constants import *
[Tue Jun 30 00:30:34.763910 2020] [:error] [pid 7666] [remote 172.31.3.126:35532] ImportError: No module named constants
Python 服务在本地完美运行(我在本地测试的方法是 1. 在顶层文件夹中创建并获取全新的虚拟环境,2. 运行 pip install -r requirements.txt,以及 3. 运行 python application.py)。但不出所料,我无法让它在 AWS 上运行。这是后端文件夹的树形结构。
backend
├── __init__.py
├── requirements.txt
└── src
├── __init__.py
├── application.py
├── constants.py
├── entities
│ ├── __init__.py
│ ├── entity.py
│ ├── job.py
│ ├── user.py
WSGIPath 键(这是您可以在 AWS 控制台中设置的配置键)设置为 backend/src/application.py(我也尝试过 src/application.py 并且只是简单的'application.py)。
正如您在日志中看到的那样,在application.py 中,我正在尝试从constants.py 导入。因为constants.py 是我自己的文件而不是第三方包,所以requirements.txt 中没有它的条目。
PS:我已经阅读了AWS Elastic Beanstalk - Flask App Cannot Import Custom Module,并且我的文件夹中已经有__init__.py。
谢谢!
【问题讨论】:
-
entities怎么样?你能导入它们吗?只想检查问题是否仅与constants.py或整个应用程序有关。 -
你也可以尝试相对导入(带点):
from .constants import *? -
向我们展示您的代码以及您如何引用它?我就是这样做的:
from base import constantsapp = Flask(__name__)
标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk mod-wsgi wsgi