Django + uwsgi + nginx. 导入错误:找不到py模块。

6

我正在尝试使用uWSGI和nginx运行我的Django示例应用程序。但是,我遇到了导入错误,没有名为py的模块。我不确定应该在哪里添加Python路径。

我正在运行以下命令。

sudo uwsgi --socket mysite.socket --module wsgi.py --chmod-socket=666. 

我甚至尝试在参数--pythonpath中传递路径,但仍然出现相同的错误。

这是我的wsgi.py文件的样子:

enter code here

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

当我尝试运行时,出现以下信息

ubuntu@ubuntu1204desktopi386:/usr/local/lib/python2.7/site-packages/mysite/mysite
$ sudo uwsgi --socket mysite.socket --module wsgi.py --chmod-socket=666 
*** Starting uWSGI 1.9.18.1 (32bit) on [Mon Oct 14 13:15:19 2013] ***
compiled with version: 4.6.3 on 13 October 2013 02:53:51
os: Linux-3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:15:33 UTC 2013
nodename: ubuntu1204desktopi386
machine: i686
clock source: unix
pcre jit disabled
detected number of CPU cores: 1
current working directory: /usr/local/lib/python2.7/site-packages/mysite/mysite
detected binary path: /usr/local/bin/uwsgi
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 3846
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address mysite.socket fd 3
Python version: 2.7.3 (default, Sep 26 2013, 20:26:19)  [GCC 4.6.3]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x9644d68
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 64024 bytes (62 KB) for 1 cores
*** Operational MODE: single process ***
ImportError: No module named py
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 2311, cores: 1)

在你的任何文件中,你是否做过类似于 import something.py 的操作? - karthikr
不是的。这是因为我在传递一个名为 --module wsgi.py 的 Python 文件。应该只传递模块,即 --module wsgi - Karthik Chandrasekar
3个回答

9
< p > --module 参数可能是指 Python 模块而不是文件。因此,您可能只需要使用 --module=wsgi


4
我猜你也可以像这样使用 --wsgi-file wsgi.py
 $ uwsgi --socket 127.0.0.1:8000 --wsgi-file my_proj/wsgi.py

确保您从同一个文件夹运行命令。


2
如果 python manage.py runserver 0.0.0.0:8024 可以正常工作,那么以下命令也可以工作(在与上述命令相同的目录中运行):
uwsgi --http :8024 --module mysite.wsgi

mysite 是这个 Django 项目的名称。

uwsgi 版本是 2.0.14;django 版本是 1.10

参考链接:https://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接