2015-05-26 13 views
11

तो यह इस सेटअप के साथ वास्तव में एक आम समस्या प्रतीत होता है, लेकिन मुझे SO पर काम करने वाले कोई भी समाधान नहीं मिल रहे हैं। मैंने एक बहुत नया उबंटू 15.04 सर्वर स्थापित किया है, फिर nginx, virtualenv (और -wrapper), और uWSGI स्थापित किया है (apt-get के माध्यम से, तो वैश्विक स्तर पर, वर्चुअलएन के अंदर नहीं)।uWSGI + virtualenv 'साइट नामित कोई मॉड्यूल'

मेरा वर्चुअलनव /root/Env/example पर स्थित है। virtualenv के अंदर, मैं Django, स्थापित तो/SRV/www/उदाहरण/ऐप्स इस परियोजना का नाम example साथ Django के startproject आदेश भाग गया, तो मैं थोड़ा इस संरचना है:

-root 
    -Env 
    -example 
     -bin 
     -lib 
-srv 
    -www 
    -example 
     -app 
     -example 
      manage.py 
      -example 
      wsgi.py 
      ... 

मेरे uWSGI के लिए example.ini फ़ाइल इस तरह दिखता है:

[uwsgi] 
project = example 

plugin = python 

chdir = /srv/www/example/app/example 
home = /root/Env/example 
module = example.wsgi:application 

master = true 
processes = 5 

socket = /run/uwsgi/app/example/example.socket 
chmod-socket = 664 
uid = www-data 
gid = www-data 
vacuum = true 

लेकिन कोई बात नहीं मैं uwsgi --ini /etc/uwsgi/apps-enabled/example.ini के माध्यम से या डेमॉन के माध्यम से इस चलाने के लिए कि क्या, मैं ठीक उसी त्रुटि मिलती है:

Python version: 2.7.9 (default, Apr 2 2015, 15:37:21) [GCC 4.9.2] 
Set PythonHome to /root/Env/example 
ImportError: No module named site 

मुझे ध्यान रखना चाहिए कि Django प्रोजेक्ट अंतर्निहित विकास सर्वर ./manage.py runserver के माध्यम से काम करता है, और जब मैं home = /root/Env/example हटाता हूं तो यह काम करता है (लेकिन स्पष्ट रूप से वर्चुअलएन संस्करणों के बजाय वैश्विक पायथन और Django का उपयोग कर रहा है, जिसका अर्थ है कि यह उचित के लिए बेकार है virtualenv सेटअप)।

क्या कोई भी कुछ स्पष्ट पथ त्रुटि देख सकता है जिसे मैं नहीं देख रहा हूं? जहां तक ​​मैं कह सकता हूं, home मेरी निर्देशिका संरचना के आधार पर पूरी तरह से सही है, और आईएनआई में भी बाकी सब कुछ है, तो यह इस आयात त्रुटि के साथ क्यों काम नहीं कर रहा है?

+1

क्या यह हल किया गया है? –

उत्तर

-5

site मॉड्यूल django की जड़ में है।

पहला चेक वर्चुअलएव मैन्युअल रूप से सक्रिय करने के लिए है (source /root/Env/example/bin/activate, पायथन शुरू करें और import site)। अगर यह विफल रहता है, तो पाइप स्थापित django।

मान लें कि django वर्चुअलएन्व में सही ढंग से स्थापित है, सुनिश्चित करें कि uWSGI वर्चुअलएन्व को सक्रिय करता है। प्रासंगिक uWSGI विन्यास निर्देशों:

pythonpath = /srv/www/example/app/example 
-1

रूप @Freek कहा, साइट पर एक अजगर मॉड्यूल को संदर्भित करता है:

plugins = python 
virtualenv = /root/Env/example 

और मामले में आप त्रुटि example.wsgi आयात करने की है।

त्रुटि का दावा है कि पायथन उस पैकेज को नहीं ढूंढ सकता है, क्योंकि ऐसा इसलिए है क्योंकि आपने गलत स्थान पर python_home निर्दिष्ट किया है।

मैं एक ही समस्या के साथ सामना किया है और मेरे uwsgi.ini नीचे की तरह है:

[uwsgi] 
# variable 
base = /home/xx/ 
# project settings 
chdir = %(base)/ 
module = botservice.uwsgi:application 
home = %(base)/env/bin 

इस विन्यास uwsgi/env/bin में अजगर निष्पादन योग्य पा सकते हैं के लिए, लेकिन कोई संकुल इस फ़ोल्डर के अंतर्गत पाया जा सकता है । इसलिए मैंने

home = %(base)/env/ 

पर घर बदल दिया और यह मेरे लिए काम किया।

आपके मामले में, मैं home निर्देश में खुदाई करने का सुझाव देता हूं और इसे उस स्थान पर इंगित करता हूं जिसमें पाइथन निष्पादन योग्य और पैकेज दोनों शामिल हैं।

3

मेरे मामले में, मैं इस मुद्दे को देख रहा था क्योंकि मैं चलाने के लिए कोशिश कर रहा था Django अनुप्रयोग अजगर 3 में लिखा गया था, जबकि uwsgi अजगर 2 के लिए कॉन्फ़िगर किया गया था मैं द्वारा समस्या तय: करने के लिए uwsgi recompiling

  1. दोनों अजगर 2 और अजगर 3 क्षुधा का समर्थन (मैं पीछा किया this गाइड)
  2. मेरी mydjangoproject_uwsgi.ini को यह जोड़ने:
plugins   = python35 # or whatever you specified while compiling uwsgi 

Django का उपयोग करने वाले अन्य लोगों के लिए, आपको यह भी सुनिश्चित करना चाहिए कि आप सही ढंग से निम्नलिखित निर्दिष्ट कर रहे हैं:

# Django dir that contains manage.py 
chdir   = /var/www/project/myprojectname 
# Django wsgi (myprojectname is the name of your top-level project) 
module   = myprojectname.wsgi:application 
# the virtualenv you are using (full path) 
home   = /home/ubuntu/Env/mydjangovenv 
plugins   = python35 
संबंधित मुद्दे