【问题标题】:ImportError: No module named mysite.settings (Django)ImportError:没有名为 mysite.settings 的模块(Django)
【发布时间】:2016-03-24 21:56:58
【问题描述】:

我在 ubuntu 15.10 上安装了 Djangomod_wsgi-express。基本上(请注意,我没有以 root 身份执行此操作):

pip install Django
pip install mod_wsgi

接下来我做了:

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

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

[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.

因此,似乎 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" 

但这并没有帮助。我还尝试将示例项目的上述路径添加到基于以下内容的python路径: https://code.djangoproject.com/wiki/PythonPath

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

编辑/解决方案

问题出在包含路径中:

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

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

【问题讨论】:

  • ~/mysite 需要在您的 Python 路径中。试试PYTHONPATH=~/mysite ./mod_wsgi-express start-server ~/mysite/mysite/wsgi.py

标签: python django


【解决方案1】:

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

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

设置前

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

【讨论】:

  • 我认为这是一个更好的解决方案,因为这意味着路径不是硬编码的path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
【解决方案2】:

请尝试:


    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")

这也适用于主项目目录中的脚本..

【讨论】:

  • 非常有帮助,先生,它在我的 django wagtail 项目中工作。根本没有 nginx 错误日志来帮助调试“内部服务器错误”,这很烦人
  • 经过数小时寻找解决方案并尝试了几个技巧,终于解决了!带有 Django 3 和 Python 3.8 的 Ubuntu 20.04 出现了问题。谢谢!
  • 谢谢!我有同样的问题,添加此代码解决了它:)。
【解决方案3】:

问题出在包含路径中:

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

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

【讨论】:

    【解决方案4】:

    当我尝试将 Windows 项目移动到 Debian 时,我也遇到了这个错误。

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

    【讨论】:

      【解决方案5】:

      此外,如果您使用的是 Visual Studio,请检查您的 Django 应用属性是否与您期望的设置模块匹配。默认情况下,它设置为 $(MSBuildProjectName).settings,这对我来说是个问题,因为我的项目名称和应用名称不一样。

      您可以通过在解决方案资源管理器中右键单击您的应用并单击“属性”,然后单击左侧的 Django 选项卡来找到此设置。

      【讨论】:

        猜你喜欢
        • 2014-06-04
        • 1970-01-01
        • 2012-10-21
        • 1970-01-01
        • 2021-08-28
        • 2021-01-28
        • 2020-09-07
        • 2018-02-05
        • 2015-07-20
        相关资源
        最近更新 更多