gpt4 book ai didi

python - Gunicorn,没有名为“myproject”的模块

转载 作者:IT老高 更新时间:2023-10-28 21:55:03 26 4
gpt4 key购买 nike

我正在新服务器上安装以前构建的网站。我不是最初的开发者。

我过去曾使用 Gunicorn + nginx 来保持应用程序的运行(基本上遵循 this tutorial ),但在这里遇到了问题。

source venv/bin/activate,然后 ./manage.py runserver 0.0.0.0:8000 运行良好,一切都按预期运行。我关闭它并运行 gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application,得到以下信息:

[2016-09-13 01:11:47 +0000] [15259] [INFO] Starting gunicorn 19.6.0
[2016-09-13 01:11:47 +0000] [15259] [INFO] Listening at: http://0.0.0.0:8000 (15259)
[2016-09-13 01:11:47 +0000] [15259] [INFO] Using worker: sync
[2016-09-13 01:11:47 +0000] [15262] [INFO] Booting worker with pid: 15262
[2016-09-13 01:11:47 +0000] [15262] [ERROR] Exception in worker process
Traceback (most recent call last):
File "/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker
worker.init_process()
File "/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/workers/base.py", line 126, in init_process
self.load_wsgi()
File "/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi
self.wsgi = self.app.wsgi()
File "/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
return self.load_wsgiapp()
File "/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
return util.import_app(self.app_uri)
File "/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/util.py", line 357, in import_app
__import__(module)
ImportError: No module named 'myproject.wsgi'
[2016-09-13 01:11:47 +0000] [15262] [INFO] Worker exiting (pid: 15262)
[2016-09-13 01:11:47 +0000] [15259] [INFO] Shutting down: Master
[2016-09-13 01:11:47 +0000] [15259] [INFO] Reason: Worker failed to boot.

我认为这与整个应用程序的结构有关。之前,我已经构建了具有以下基本结构的应用程序:

myproject
├── manage.py
├── myproject
│   ├── urls.py
│   ├── views.py
│   ├── component1
│ │   ├── urls.py
│ │   └── views.py
│   ├── component2
│ │   ├── urls.py
│ │   └── views.py
├── venv
│   ├── bin
│   └── ...

相反,这个结构具有如下结构:

myproject
├── apps
│   ├── blog
│ │   ├── urls.py
│ │   ├── views.py
│   │ └── ...
│   ├── catalogue
│ │   ├── urls.py
│ │   ├── views.py
│   │ └── ...
│   ├── checkout
│ │   ├── urls.py
│ │   ├── views.py
│   │ └── ...
│   ├── core
│ │   ├── urls.py
│ │   ├── views.py
│   │ └── ...
│   ├── customer
│   ├── dashboard
│   └── __init__.py
├── __init__.py
├── manage.py
├── project_static
│   ├── assets
│   ├── bower_components
│   └── js
├── public
│   ├── emails
│   ├── media
│   └── static
├── settings
│   ├── base.py
│   ├── dev.py
│   ├── __init__.py
│   ├── local.py
│   └── production.py
├── templates
│   ├── base.html
│   ├── basket
│   ├── blog
│   └── ....
├── urls.py
├── venv
│   ├── bin
│   ├── include
│   ├── lib
│   ├── pip-selfcheck.json
│   └── share
└── wsgi.py

所以,没有运行该节目的“主”模块,这正是我期望 gunicorn 正在寻找的。

有什么想法吗?

wsgi.py:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")

application = get_wsgi_application()

最佳答案

你的错误信息是

ImportError: No module named 'myproject.wsgi'

你运行了这个应用程序

gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application

wsgi.py 有一行

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")

这是断开连接。为了将项目识别为 myproject.wsgiparent 目录必须位于 python 路径上...正在运行

cd .. && gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application

将消除该错误。但是,由于 wsgi.py 文件引用的是 settings 而不是 myproject.settings,因此您会得到一个不同的错误。这意味着该应用程序旨在从根目录而不是一个目录运行。您可以通过查看代码确定这一点 - 如果它使用绝对导入,他们通常会说 from myproject.app import ... 还是 from app import ...。如果这个猜测是正确的,你正确的命令是

gunicorn --bind 0.0.0.0:8000 wsgi:application

如果应用在所有路径中都使用 myproject,则您必须修改 PYTHONPATH 才能正常运行...

PYTHONPATH=`pwd`/.. gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application

关于python - Gunicorn,没有名为“myproject”的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39460892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com