简体   繁体   English

Django + uwsgi + nginx。 导入错误:没有名为py的模块

[英]Django + uwsgi + nginx . Import error: No module named py

I am trying to run my sample django application using uWSGI and nginx. 我正在尝试使用uWSGI和nginx运行我的示例django应用程序。 But I am getting import error, no module named py. 但我得到导入错误,没有名为py的模块。 I am not sure where should I add the python path. 我不知道我应该在哪里添加python路径。

I am running with the following command. 我正在使用以下命令运行。

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

I even tried passing path in the parameter --pythonpath , still the same error. 我甚至尝试在参数--pythonpath传递路径,仍然是同样的错误。

This is how my wsgi.py looks like 这就是我的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()

When I try running, I get the following messages 当我尝试运行时,我收到以下消息

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)

The --module argument is presumably meant to be a Python module, not a file. --module参数可能是一个Python模块,而不是一个文件。 So you probably just need --module=wsgi . 所以你可能只需要--module=wsgi

i guess you can also use , --wsgi-file wsgi.py like this 我想你也可以像这样使用--wsgi-file wsgi.py

 $ uwsgi --socket 127.0.0.1:8000 --wsgi-file my_proj/wsgi.py

Make sure you run command from same folder 确保从同一文件夹运行命令

If python manage.py runserver 0.0.0.0:8024 can work well, then 如果python manage.py runserver 0.0.0.0:8024可以正常工作,那么

This also can work(run it on the same directory as above command): 这也可以工作(在与上面命令相同的目录上运行它):

uwsgi --http :8024 --module mysite.wsgi

mysite is the name of this django project mysite是这个django项目的名称

uwsgi version is 2.0.14 ; uwsgi版本是2.0.14 ; django version is 1.10 . django版本是1.10

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM