2016-03-24 15 views
5

Tôi đã cài đặt Djangomod_wsgi-express trên ubuntu 15.10. Về cơ bản (thông báo tôi đã làm không làm điều này như root):ImportError: Không có mô-đun có tên mysite.settings (Django)

pip install Django 
pip install mod_wsgi 

Tiếp theo, tôi đã làm:

~/.local/bin $ ./mod_wsgi-express start-server ~/mysite/mysite/wsgi.py 

nơi: ~/mysite/mysite/wsgi.py xuất phát từ sample project mà tôi tải lên đến đích trên trên máy chủ. Nhưng tôi gặp lỗi khi cố gắng truy cập trang web (Lỗi Máy chủ Nội bộ). Khi tôi nhìn lại trong nhật ký tôi thấy:

[Thu Mar 24 22:26:24.638043 2016] [wsgi:error] [pid 19469:tid 139785018738560]  mod = importlib.import_module(self.SETTINGS_MODULE) 
[Thu Mar 24 22:26:24.638070 2016] [wsgi:error] [pid 19469:tid 139785018738560] File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
[Thu Mar 24 22:26:24.781030 2016] [wsgi:error] [pid 19469:tid 139785018738560]  __import__(name) 
[Thu Mar 24 22:26:24.781148 2016] [wsgi:error] [pid 19469:tid 139785018738560] ImportError: No module named mysite.settings 
[Thu Mar 24 22:26:27.590300 2016] [wsgi:error] [pid 19469:tid 139784895194880] [remote 92.243.236.53:24636] mod_wsgi (pid=19469): Target WSGI script '/tmp/mod_wsgi-localhost:8000:1000/handler.wsgi' cannot be loaded as Python module. 

Vì vậy, có vẻ như mysite.settings không thể được tìm thấy/không nằm trong PATH Python (file ~/mysite/mysite/settings.py làm hiện hữu).

Dựa trên: https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/

Tôi cố gắng thêm:

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

Nhưng nó đã không giúp đỡ. Tôi cũng đã cố gắng thêm đường dẫn ở trên vào dự án mẫu vào đường dẫn trăn dựa trên: https://code.djangoproject.com/wiki/PythonPath

Nhưng lỗi tương tự. Tôi đang thiếu gì?

EDIT/Giải pháp:

Vấn đề là trong đường dẫn bao gồm:

import sys 
#Wrong! 
#sys.path.append("/home/user/mysite/mysite") 

#Correct 
sys.path.append("/home/user/mysite") 
+0

'~/mysite' cần nằm trong đường dẫn Python của bạn. Hãy thử với 'PYTHONPATH = ~/mysite ./mod_wsgi-express start-server ~/mysite/mysite/wsgi.py' –

Trả lời

3

Vấn đề là trong đường dẫn bao gồm:

import sys 
#Wrong! 
#sys.path.append("/home/user/mysite/mysite") 

#Correct 
sys.path.append("/home/user/mysite") 
+1

Cảm ơn, nó làm việc cho tôi. –

13

thêm video này vào wsgi.py bạn tập tin

path = '/home/path/to/project' 
if path not in sys.path: 
    sys.path.append(path) 

trước khi thiết

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 
+3

Tôi nghĩ đây là giải pháp tốt hơn vì nó có nghĩa là đường dẫn không được mã hóa cứng' path = os.path. dirname (os.path.dirname (os.path.abspath (__ file __))) ' – HenryM

5

Vui lòng thử:


    import os 
    import sys 
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
    sys.path.append(BASE_DIR) 
    os.environ['DJANGO_SETTINGS_MODULE'] = 'YOURAPP.settings' 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "YOURAPP.settings") 

Đây là làm việc cho các kịch bản trong thư mục chính của dự án, cũng ..

+0

rất hữu ích thưa ông, nó đã làm việc trong dự án wagtail django của tôi. Rất khó chịu khi không có nhật ký lỗi nginx nào để giúp gỡ lỗi "Lỗi máy chủ nội bộ" – paul100

0

Tôi có điều này cũng vậy, khi tôi đang cố di chuyển một dự án cửa sổ sang Debian.

import sys 
sys.path.append("your project path") 
0

Ngoài ra, nếu bạn đang sử dụng Visual Studio, hãy kiểm tra xem thuộc tính ứng dụng của bạn cho Django có khớp với mô-đun cài đặt mà bạn đang mong đợi hay không. Theo mặc định, nó được đặt thành $ (MSBuildProjectName) .settings, đây là một vấn đề đối với tôi vì tên dự án và tên ứng dụng của tôi không giống nhau.

Bạn có thể tìm thấy cài đặt này bằng cách nhấp chuột phải vào ứng dụng của bạn trong Solution Explorer và nhấp vào "Thuộc tính" và sau đó nhấp vào tab Django ở bên trái.

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