簡體   English   中英

無法在 AWS Elastic Beanstalk 上部署 Python Flask 應用程序 | 沒有名為“應用程序”的模塊

[英]Python Flask application not deployable on AWS Elastic Beanstalk | No module named 'application'

web.stdout.log 中的錯誤消息:

Oct 15 13:03:29 ip-172-31-18-218 web: ModuleNotFoundError: No module named 'application'
Oct 15 13:03:29 ip-172-31-18-218 web: [2020-10-15 13:03:29 +0000] [4633] [INFO] Worker exiting (pid: 4633)
Oct 15 13:03:29 ip-172-31-18-218 web: [2020-10-15 13:03:29 +0000] [4626] [INFO] Shutting down: Master
Oct 15 13:03:29 ip-172-31-18-218 web: [2020-10-15 13:03:29 +0000] [4626] [INFO] Reason: Worker failed to boot.

nginx/error.log 中的錯誤信息

2020/10/15 13:04:21 [error] 4559#0: *19 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.42.151, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8000/", host: "172.31.18.218"

燒瓶應用程序:

# EB looks for an 'application' callable by default.
application = Flask(__name__)

@application.route('/')
def home(): 
    return "Hello World"

@application.route('/processImage')
def index():
    [Some Code...]

if __name__ == '__main__':
    # Setting debug to True enables debug output. This line should be
    # removed before deploying a production app.
    application.run('localhost',8000,debug=True)

要求.txt

certifi==2020.6.20
chardet==3.0.4
click==7.1.2
Flask==1.1.2
idna==2.10
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
numpy==1.19.2
opencv-python==4.4.0.44
requests==2.24.0
urllib3==1.25.10
Werkzeug==1.0.1
    

我的文件夾結構:

eb-flask
  |- .vscode (folder)
  |- images (folder)
  |- application.py
  |- requirements.txt

部署方式:

Deployment via the Elastic Beanstalk Web UI by uploading a .zip archive of the above described folder. 

任何有關如何進一步調試或解決此問題的想法將不勝感激。 非常感謝。

您可能需要將模塊添加到環境路徑變量中,以便模塊查找成功。 從文件/命令行運行以下命令-

import sys
import os
sys.path.append("/path_to_your_app/eb-flask")

您正在端口 8000 上運行您的應用程序。但是,EB 會期望它在端口 5000 上運行。因此,您要么更改 EB 上的默認端口,要么修改您的應用程序以在端口 5000 上運行:

application.run('localhost', 5000,debug=True)

我遇到了同樣的錯誤。

我做的幾件事是:

  1. 進行了更改: application = app = Flask(__name__)
  2. 將 python 文件重命名為application.py

同樣非常重要的是:無論需要什么文件,都選擇它們並壓縮它們(在 Windows 中右鍵單擊“發送到”->“壓縮”)並上傳到 beanstalk。

不要將所有必需的文件放在一個文件夾中並壓縮。 這就是ModuleNotFound: No Module name 'application'背后的原因

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM