2011-04-30 16 views
12

मैं अपने डीनैगो एप्लिकेशन को अपाचे और mod_wsgi के साथ अपने लिनोड सर्वर पर तैनात करने की कोशिश कर रहा हूं।Django + mod_wsgi + apache: आयात करें/कोई मॉड्यूल नाम नहीं है djproj.urls

Environment: 


Request Method: GET 
Request URL: http://example.com/ 

Django Version: 1.3 
Python Version: 2.6.6 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles'] 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3- py2.6.egg/django/core/handlers/base.py" in get_response 
    101.        request.path_info) 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py 2.6.egg/django/core/urlresolvers.py" in resolve 
    250.    for pattern in self.url_patterns: 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/urlresolvers.py" in _get_url_patterns 
    279.   patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/urlresolvers.py" in _get_urlconf_module 
    274.    self._urlconf_module = import_module(self.urlconf_name) 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/utils/importlib.py" in import_module 
    35.  __import__(name) 

Exception Type: ImportError at/
Exception Value: No module named djproj.urls 
:

file: /srv/www/example.com/djproj/django.wsgi

import os 
import sys 

sys.path.append('/srv/www/example.com/djproj') 

os.environ['PYTHON_EGG_CACHE'] = '/srv/www/example.com/.python-egg' 
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

file: /etc/apache2/sites-available/example.com

/etc/apache2/sites-available/example.com 
ServerAdmin [email protected] 
ServerName example.com 
ServerAlias www.example.com 

DocumentRoot /srv/www/example.com/public_html 

WSGIScriptAlias//srv/www/example.com/djproj/django.wsgi 

<Directory "/srv/www/example.com/djproj"> 
    Order allow,deny 
    Allow from all 
</Directory> 

ErrorLog /srv/www/example.com/logs/error.log 
CustomLog /srv/www/example.com/logs/access.log combined 

जब मैं यात्रा कर मेरी साइट के/मैं इस त्रुटि मिल 210

मैं इसे काम नहीं कर सकता। विचार?

उत्तर

23

या तो परियोजना नाम को बाहर करने के लिए अपने सभी मॉड्यूल/पैकेज प्रविष्टियों और आयातों को बदलें, या sys.path में भी डालें।

+3

यह मेरी समस्या भी दिखना चाहिए। हालांकि दस्तावेज़ों में इसका उल्लेख क्यों नहीं किया गया है !!!!!!!!!! मैंने सोचा कि आपको बस DJANGO_SETTINGS_MODULE निर्दिष्ट करना होगा और फिर डेजैगो बाकी का ख्याल रखेगा। – Sam

+0

ध्यान दें कि पथ वास्तव में "/srv/www/site.com" पढ़ना चाहिए, ** क्योंकि यही पूछताछकर्ता ने अपने प्रश्न में क्या लिखा है **। –

1

जहां djproj.urls शायद कोशिश है सिर्फ urls

32

मैं दूसरे इग्नेसियो वेज़क्वेज़-अब्राम के answer। आपको अपने प्रोजेक्ट निर्देशिका के साथ-साथ के पथ को अपनी मूल निर्देशिका से sys.path पर पथ जोड़ना होगा। मैं उपयोग की जाने वाली डब्लूएसजीआई स्क्रिप्ट फ़ाइल का एक उदाहरण यहां दिया गया है। मैं प्रोजेक्ट निर्देशिका के अंदर फ़ाइल रखता हूं।

import os 
import sys 

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../../"))) 
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../"))) 

os.environ["DJANGO_SETTINGS_MODULE"] = "PROJECT_NAME.settings" 

from django.core.handlers.wsgi import WSGIHandler 
application = WSGIHandler() 
+0

प्रतिपादन करते समय 'Caught VariableDoesNotExist' प्राप्त करना: '[]' में कुंजी [0] के लिए असफल खोज [...] 'डालने की कोशिश करते समय '../../' & '../ 'पथ –

+1

वाह आप मेरे नायक हैं, इस समय 3 घंटे की तरह लड़ रहे थे, उन्होंने पथ सूची को आगे बढ़ाने के बारे में नहीं सोचा था। काश मैं और अधिक उठा सकता है! –

+1

आपने अपना जीवन बचाया! अरे नहीं! मैंने इस समाधान की खोज में दो दिन का भुगतान किया है। धन्यवाद दोस्त! –

9

सेकेंडिंग अयाज का जवाब। यह महत्वपूर्ण है कि आप जिस पथ को निर्दिष्ट कर रहे हैं वह खोज पथ की शुरुआत में हो, जिसका अर्थ है कि आपको सम्मिलित करने की आवश्यकता है ..

यहां मेरा है। जब मैं 'संलग्न' कर रहा था तो मुझे अस्थायी समस्याएं मिल रही थीं। यह इसे ठोस चट्टान बना दिया। उम्मीद है की यह मदद करेगा।

sys.path.insert(0, '/srv/www/Appname') 
sys.path.insert(1, '/srv/www') 
+0

यह शायद मेरे जीवन और समस्या निवारण के घंटे बचा सकता है। – Clocker

2

क्या मेरे लिए इस त्रुटि को सही -

से settings.py बदलना:

ROOT_URLCONF = 'यूआरएल'

इस के लिए

:

ROOT_URLCONF = 'MyProject। यूआरएल '

+0

यह मेरी तरफ भी एक कांटा था। यही कारण था। मुझे यह पता लगाने के लिए मेरी पूरी साइट खोजनी थी (egrep) कि यह कहां से यूआरएल फाइल प्राप्त करने का प्रयास कर रहा था। – Furbeenator

5

इस ट्यूटोरियल का पालन करने का प्रयास करें - http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/

सिस्टम पथ पर Django निर्देशिका और Django परियोजना निर्देशिका दोनों को जोड़ना सुनिश्चित करें। आपका wsgi.py

import os,sys 

#comments 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_project.settings") 
sys.path.append('/path/to/your/django/directory/django_project') 
sys.path.append('/path/to/your/django/directory') 

#comments 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 
संबंधित मुद्दे