/bin/sh: 1: exec: gunicorn: 未找到

/bin/sh: 1: exec: gunicorn: not found

我正在尝试在 google 云应用引擎上部署一个简单的 Django 应用程序。应用程序具有基本的 wsgi 和 asgi 服务器,其中 wsgi 服务于 HTTPS 请求,而 asgi 服务于 websocket 请求。 我正在按照 google 应用引擎教程部署应用程序,它已成功构建和部署。但是,无法在部署的工作空间中找到已安装的包。

这些是我正在执行的步骤

gcloud init
virtualenv myenv
source activate myenv/bin/activate
pip install -r requirements.txt
gcloud app deploy

requirements.txt 确实有 gunicorn 和 daphne,它们也被安装了。

这是我在浏览器上打开部署的应用程序时遇到的错误。

2020-12-15 20:48:25 my-service[20201216t014451]  /bin/sh: 1: exec: gunicorn: not found

这是我的 app.yaml 文件的样子

runtime: python38
service: my-service
instance_class: F2

entrypoint: gunicorn -b :$PORT main:app
handlers:
  - url: /.*
    script: auto
    secure: always

inbound_services:
- warmup

automatic_scaling:
  min_instances: 1
  min_idle_instances: 1
  max_instances: 2
  max_idle_instances: 1

我也尝试在入口点传递确切的路径,即 entrypoint: gunicorn -b :$PORT main:app 但得到同样的错误

我正在我的 virtualenv 中调用 gcloud app deploy 但是当它部署时它无法读取已安装的包,即 daphne 和独角兽。 他们都在本地环境中使用相同的包在同一目录中工作得很好。

我已经参考了这些问题 and this 并尝试了答案,但没有任何效果。

GAE 应用引擎需要 requirements.txt 文件与 app.yaml.

位于同一目录中

我的 requirements.txt 文件位于子文件夹中,这就是 google 应用引擎无法安装 gunicorn 的原因。 我在本地安装要求并在部署时传递安装的要求,但似乎没有必要在本地安装它们(除了在本地服务器上测试更改)。