【问题标题】:AWS Elastic Beanstalk - Unable to import local fileAWS Elastic Beanstalk - 无法导入本地文件
【发布时间】: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


【解决方案1】:

所以我找到了解决方案。我明确需要将sys.path.append("/opt/python/current/app/backend/src") 添加到application.py 的顶部。这反过来又使 constants.py 在 AWS 端可被发现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-01
    • 2015-03-05
    • 2013-04-11
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2015-07-22
    • 2018-08-09
    相关资源
    最近更新 更多