Django 虚拟环境 - 没有名为 'gunicorn' 的模块

Django Virtual Environment - No module named 'gunicorn'

我已经遵循了本指南 (https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04),但是当我尝试通过 gunicorn 服务文件 (/etc/systemd/system/gunicorn.service) 运行 gunicorn 时,我目前看到了以下内容:

Oct 04 11:30:22 ukgcdeploy01 gunicorn[8095]:   File "/opt/envs/automation-console-env/bin/gunicorn", line 5, in <module>
Oct 04 11:30:22 ukgcdeploy01 gunicorn[8095]:     from gunicorn.app.wsgiapp import run
Oct 04 11:30:22 ukgcdeploy01 gunicorn[8095]: ModuleNotFoundError: No module named 'gunicorn'

gunicorn.service 文件包含以下内容:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/opt/envs/automation-console-env
ExecStart=/opt/envs/automation-console-env/bin/gunicorn --timeout 600 --log-level debug --error-log /var/log/automation-console-env_error.log  --access-logfile /var/log/automation-console-env_access.log --workers 3 --bind unix:/opt/envs/automation-console-env/automation-console-env.sock django_forms.wsgi:application


[Install]
WantedBy=multi-user.target

运行 gunicorn 手动工作正常:

gunicorn --bind 0.0.0.0:8000 myproject.wsgi

这在我必须将我的 Python 版本从 3.5.2 升级到 3.9 之前是有效的,并且由于一些问题我最终不得不重新创建虚拟环境,所以我认为它不是一定是服务文件有问题,而是我的 Python/Gunicorn 安装。

如果有人能提供一些建议,将不胜感激:)

automation-console-env环境是否存在?如果是这样,那里安装了 gunicorn 吗?在任何一种情况下,由于它在命令行上作为 gunicorn ... 工作,您应该能够使用此安装。

which gunicorn

然后更改您的 systemd 单元文件以指向此可执行文件。

看来您要么定义了错误的路径,要么在 gunicorn.service 中遇到了权限问题。

首先尝试使用 systemctl enable gunicorn.service 启用该服务。如果它不起作用,请尝试以下操作:

编辑gunicorn.service如下:

来自: --bind unix:/opt/envs/automation-console-env/automation-console-env.sock django_forms.wsgi:application

至: --bind unix:/opt/envs/automation-console-env/automation-console-env.sock django_forms.wsgi