2010-08-23 41 views
6

Đây là lỗi tôi nhận được trong Apache lỗi đăng nhập của tôi:Không thể có được mod_wsgi và Apache với Django để làm việc

[Sun Aug 22 16:52:06 2010] [error] [client 127.0.0.1] ImportError: No module named settings

Đây là tập tin .wsgi của tôi, mỗi this blog post:

import sys 

sys.path.insert(0, '/home/wot/django-projects/aedo') 
import settings 
import django.core.management 
django.core.management.setup_environ(settings) 
utility = django.core.management.ManagementUtility() 
command = utility.fetch_command('runserver') 
command.validate() 
import django.conf 
import django.utils 

django.utils.translation.activate(django.conf.settings.LANGUAGE_CODE) 

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

Tôi đã tăng gấp đôi và gấp ba lần kiểm tra tên đường dẫn và đó thực sự là đường dẫn đến tệp dự án của tôi. Tôi đã cố gắng để có được điều này để làm việc trong nhiều giờ, và đã làm nhiều googling. Tôi hỏi đây là phương sách cuối cùng của tôi. Tôi tuyệt vọng!

EDIT: Tôi biết rằng có những câu hỏi tương tự ở đây trên SA, và tôi đã đọc qua hầu hết tất cả trong số họ, không có kết quả

+0

Có một cơ hội tốt mà Django có thể tìm thấy tập tin cài đặt của bạn, nhưng nó không thể nhập nó. Django cho lỗi này bất cứ khi nào nó không thể nhập một tập tin cài đặt vì lý do gì. Vì vậy, hãy thử thêm 'cài đặt nhập' trong tệp' .wsgi' của bạn. – Wolph

+0

Bạn có chắc chắn 100% rằng bạn không mắc lỗi đánh máy trên đường dẫn hay gì đó không? Và bạn thực sự có một 'settings.py' trong thư mục'/home/wot/django-projects/aedo'? Cái này hay cái kia phải sai. – Wolph

+0

Hiện tại, anh ta có 'cài đặt nhập' trong tệp WSGI của mình. Anh ta không dựa vào phương thức biến môi trường DJANGO_SETTINGS_MODULE. –

Trả lời

2

đầu ra từ hoạt động là gì? Nếu họ không phải là bạn có thể nhận được lỗi đó.

Cũng xem nói chuyện và nhìn vào slide đề cập tại địa chỉ:

http://blog.dscpl.com.au/2010/06/sydney-pycon-modwsgi-talk-slides.html

vì nó thảo luận về các vấn đề quyền hơn nữa.

+0

Yeah all các tệp có thể đọc và thực thi cho tất cả người dùng. Và cảm ơn sẽ làm – skroth

2

Nó không hoạt động khi bạn đặt:

import os, sys 
sys.path.append('/usr/local/django') # obs: path to django 
sys.path.append('/home/wot/django-projects/aedo') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

import django.core.handlers.wsgi 

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

trong tệp django.wsgi của bạn?

ls -las /home/wot/django-projects/aedo/ 

là thư mục và tất cả các file có thể đọc được cho người sử dụng mà Apache chạy như:

+2

Điều đó sẽ không hoạt động khi bạn thêm thư mục trang web vào sys.path chứ không phải thư mục mẹ. –

+0

@Graham Dumpleton - đúng, đã sửa chữa. Đó là vì tôi đã sao chép từ một trong các dự án của tôi bằng cách sử dụng pydev và thường tôi có 2 lần thư mục (1 cho tên dự án và 1 cho src) như '.../django-projects/aedo/aedo/files.py' – laurent

2

thử thay đổi

os.environ['DJANGO_SETTINGS_MODULE'] = 'aedo.settings' 

để

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

Thật sự tôi đã nhận được lỗi này quá và tôi đã làm ở trên. Tôi cũng thay đổi

ROOT_URLCONF = 'appname.urls' 

để

ROOT_URLCONF = 'urls' 

Tôi hy vọng settings.py bạn đang ở trong cùng thư mục với tập tin wsgi cho dự án này.

0

Đối với tôi, tôi đã gặp phải sự cố nhập kỳ lạ, Python đã tuyên bố rằng Django không thể nhập Trang web ... Vì cài đặt của tôi được chuyển từ một "máy chủ python" thuần túy sang môi trường WSGI, các quyền đã thực sự là vấn đề.

Ngạc nhiên khi tôi thậm chí không thay đổi sự cho phép trên bao bì django.contrib.site, chỉ cần tất cả các tập tin của dự án đến 755.

Các vấn đề liên quan