2009-08-01 28 views
14

Các ứng dụng cài đặt 'Cài đặt' chạy tốt sử dụng django máy chủ nội bộ tuy nhiên khi tôi sử dụng apache + mod_python tôi nhận được báo lỗi dưới đâyDjango triển khai người mới câu hỏi - ImportError: Không thể nhập


File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 75, in __init__ 
    raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e) 

ImportError: Could not import settings 'settings' (Is it on sys.path? Does it have syntax errors?): No module named settings 

Đây là thông tin cần thiết

1) Thư mục dự án:/root/djangoprojects/mysite

2) danh sách thư mục của/root/djangoprojects/mysite

ls -ltr 
total 28 
-rw-r--r-- 1 root root 546 Aug 1 08:34 manage.py 
-rw-r--r-- 1 root root 0 Aug 1 08:34 __init__.py 
-rw-r--r-- 1 root root 136 Aug 1 08:35 __init__.pyc 
-rw-r--r-- 1 root root 2773 Aug 1 08:39 settings.py 
-rw-r--r-- 1 root root 1660 Aug 1 08:53 settings.pyc 
drwxr-xr-x 2 root root 4096 Aug 1 09:04 polls 
-rw-r--r-- 1 root root 581 Aug 1 10:06 urls.py 
-rw-r--r-- 1 root root 314 Aug 1 10:07 urls.pyc 

3) App thư mục:/root/djangoprojects/mysite/các cuộc thăm dò

4) danh sách thư mục của/root/djangoprojects/mysite/các cuộc thăm dò

ls -ltr 
total 20 
-rw-r--r-- 1 root root 514 Aug 1 08:53 tests.py 
-rw-r--r-- 1 root root 57 Aug 1 08:53 models.py 
-rw-r--r-- 1 root root 0 Aug 1 08:53 __init__.py 
-rw-r--r-- 1 root root 128 Aug 1 09:02 views.py 
-rw-r--r-- 1 root root 375 Aug 1 09:04 views.pyc 
-rw-r--r-- 1 root root 132 Aug 1 09:04 __init__.pyc 

5) Anywhere trong django hệ thống tập tin chạy nhập khẩu thông dịch viên python hoạt động tốt

6) nội dung của httpd.conf

<Location "/mysite"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE settings 
    PythonOption django.root /mysite 
    PythonPath "['/root/djangoprojects/', '/root/djangoprojects/mysite','/root/djangoprojects/mysite/polls', '/var/www'] + sys.path" 
    PythonDebug On 
</Location> 

7) biến PYTHONPATH được thiết lập để

echo $PYTHONPATH 
/root/djangoprojects/mysite 

8) DJANGO_SETTINGS_MODULE được thiết lập để

echo $DJANGO_SETTINGS_MODULE 
mysite.settings 

9) nội dung của sys.path là

import sys 
>>> sys.path 
['', '/root/djangoprojects/mysite', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/local/lib/python2.6/dist-packages'] 

thế nào Tôi thêm vị trí cài đặt vào sys.path sao cho nó liên tục qua các phiên?

Tôi đã đọc không có bài đăng nào với những người có cùng vấn đề và tôi đã thử rất nhiều lần đánh bại tôi về những gì tôi cần làm.

Tìm kiếm trợ giúp.

Cảm ơn trước Ankur Gupta

Trả lời

5

cấu hình apache của bạn sẽ trông như thế này:

<Location "/mysite"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings 
    PythonOption django.root /mysite 
    PythonPath "['/root/djangoprojects/', '/root/djangoprojects/mysite','/root/djangoprojects/mysite/polls', '/var/www'] + sys.path" 
    PythonDebug On 
</Location> 

Lưu ý rằng sự khác biệt duy nhất là "mysite.settings". Đừng quên khởi động lại apache khi cấu hình đã thay đổi (apache2ctl restart). Xem http://docs.djangoproject.com/en/dev/howto/deployment/modpython/ để biết thêm thông tin.

+0

thực hiện thay đổi mà bạn đề cập vì vậy bây giờ nó xuất hiện như SetHandler python-chương trình PythonHandler django.core.handlers.modpython setenv DJANGO_SETTINGS_MODULE mysite.settings PythonOption django.root/mysite PythonPath "['/ root/djangoprojects /', '/ root/djangoprojects/mysite', '/ root/djangoprojects/mysite/polls', '/ var/www'] + sys.path" PythonDebug Trên để khởi động lại, tôi đã làm như sau /etc/init.d/apache2 restart sti sẽ không có may mắn. /etc/init.d/apache2 restart –

+0

thực hiện thay đổi cài đặt thành mysite.settings vẫn còn lỗi tương tự. –

+1

có lẽ PythonPath dài gây nhầm lẫn mod_python. Hãy thử chỉ có PythonPath "['/ root/djangoprojects /'] + sys.path" Ngoài ra, hãy đảm bảo rằng Apache có quyền đọc tệp cài đặt (đọc quyền cho người khác) và toàn bộ đường dẫn cho đến khi tệp (đọc và thực thi quyền cho người khác trên/root,/root/djangoprojects và/root/djangoprojects/mysite). Mặc dù nó sẽ là tốt hơn để di chuyển toàn bộ dự án đến một vị trí bên ngoài/root, sau khi tất cả nó không nên có. –

0

Hãy thử thay đổi như sau:

<Location "/mysite"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings 
    PythonOption django.root /mysite 
    PythonPath "['/root/djangoprojects', '/var/www'] + sys.path" 
    PythonDebug On 
</Location> 

Sử dụng không "/" ở cuối của các mục PYTHONPATH (mà có thể là một vấn đề, tôi đã có vấn đề với điều đó ít nhất là trên Windows).

Các mục '/ root/djangoprojects/mysite', '/ root/djangoprojects/mysite/polls' không cần thiết vì bạn sẽ đề cập đến các mô-đun của bạn theo tên đầy đủ (ví dụ: mysite.sttings có nghĩa là module cài đặt bên trong gói mysite, đó là cách chính xác để truy cập nó trong PythonPath/root/djangoprojects).

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