ImportError:没有名为mysite.settings的模块(Django)

u12*_*123 12 python django

我在ubuntu 15.10上安装了Djangomod_wsgi-express.基本上,(注意我并没有这样做,因为根):

pip install Django
pip install mod_wsgi
Run Code Online (Sandbox Code Playgroud)

接下来我做了:

~/.local/bin $ ./mod_wsgi-express start-server ~/mysite/mysite/wsgi.py
Run Code Online (Sandbox Code Playgroud)

其中:~/mysite/mysite/wsgi.py来自我上传到服务器上述目标的示例项目.但是当我尝试访问网站时出现错误(内部服务器错误).当我查看日志时,我看到:

[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.
Run Code Online (Sandbox Code Playgroud)

所以似乎无法找到mysite.settings /不在Python PATH上(文件〜/ mysite/mysite/settings.py确实存在).

基于:https: //docs.djangoproject.com/en/1.9/howto/deployment/wsgi/

我试着添加:

os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" 
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.我还尝试将以上路径添加到示例项目到python路径:https: //code.djangoproject.com/wiki/PythonPath

但同样的错误.我错过了什么?

编辑/解决方案:

问题出在包含路径中:

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

#Correct
sys.path.append("/home/user/mysite")
Run Code Online (Sandbox Code Playgroud)

nor*_*ght 18

将其添加到您的wsgi.py文件中

path = '/home/path/to/project'
if path not in sys.path:
    sys.path.append(path)
Run Code Online (Sandbox Code Playgroud)

在设定之前

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是一个更好的解决方案,因为它意味着路径不是硬编码的`path = os.path.dirname(os.path.dirname(os.path.abspath(__ file __)))` (7认同)

小智 11

请试试:


    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")
Run Code Online (Sandbox Code Playgroud)

这适用于主项目目录中的脚本,以及...


u12*_*123 6

问题出在包含路径中:

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

#Correct
sys.path.append("/home/user/mysite")
Run Code Online (Sandbox Code Playgroud)