ImportError:无法导入设置(是不是在 sys.path 上?设置文件中是不是存在导入错误?):没有名为 setting 的模块

Posted

技术标签:

【中文标题】ImportError:无法导入设置(是不是在 sys.path 上?设置文件中是不是存在导入错误?):没有名为 setting 的模块【英文标题】:ImportError: Could not import settings (Is it on sys.path? Is there an import error in the settings file?): No module named settingImportError:无法导入设置(是否在 sys.path 上?设置文件中是否存在导入错误?):没有名为 setting 的模块 【发布时间】:2014-03-29 13:50:22 【问题描述】:

我正在使用 python2.7 在 VPS CentOS 6(带有 Plesk)上将“示例”项目投入生产, mod_wsgiDjango 1.6 我已经证明了许多配置,但我总是收到错误“没有名为设置的模块”或“没有名为 Unipath 的模块”。不是我错了或我失踪了。谢谢和问候。

我的 vhost.conf:

Alias /static/ /var/www/vhosts/example.com/httpdocs/
Alias /media/ /var/www/vhosts/example.com/httpdocs/media/

WSGIScriptAlias / /var/www/vhosts/example.com/example.wsgi

<Directory /var/www/vhosts/example.com>
    Order allow,deny
    Allow from all
</Directory>

我的例子.wsgi:

import os
import sys

path = '/var/www/vhosts/example.com/example'
if path not in sys.path:
   sys.path.append(path)

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

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

我通过 ftp 将我的项目放入:/var/www/vhosts/example.com/

example.com/
      example(project)
          settings.py
          urls.py
          ...
      app
          models.py
          forms.py
          views.py
          ...
      templates
      httpdocs
      example.wsgi
      manage.py

再次感谢...

【问题讨论】:

【参考方案1】:

使用WSGIDaemonProcess & WSGIProcessGroup

您可以通过在apache2 配置中设置python-path 来解决此问题 指向你的 django 项目目录

Alias /static/ /var/www/vhosts/example.com/httpdocs/
Alias /media/ /var/www/vhosts/example.com/httpdocs/media/

WSGIScriptAlias / /var/www/vhosts/example.com/example.wsgi

WSGIDaemonProcess example.com processes=2 threads=15 display-name=%GROUP python-path=/var/www/vhosts
WSGIProcessGroup example.com

<Directory /var/www/vhosts/example.com>
    Order allow,deny
    Allow from all
</Directory>
已编辑以从 嵌入式模式 切换到 守护程序模式。感谢this blog post 的作者Graham Dumpleton 并对此发表了评论。

【讨论】:

除非您不应该使用嵌入式模式。使用mod_wsgi的守护模式,它是WSGIDaemonProcesspython-path选项。重复一遍,除非你被 Windows 卡住了,否则你永远不应该使用嵌入式模式。 @GrahamDumpleton,感谢您的评论,我也阅读了your blog post。我不知道守护程序模式。谢谢!编辑了我的答案【参考方案2】:

阅读官方 Django 文档,了解如何为 mod_wsgi 设置内容:

https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/

您没有按照该文档中的说明设置 Python 模块搜索路径或 DJANGO_SETTINGS_MODULE。

【讨论】:

【参考方案3】:

您的设置在示例应用程序中,因此应该是:

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

【讨论】:

我尝试了同样的错误:(设置在项目示例中很抱歉

以上是关于ImportError:无法导入设置(是不是在 sys.path 上?设置文件中是不是存在导入错误?):没有名为 setting 的模块的主要内容,如果未能解决你的问题,请参考以下文章

cx_Freeze- ImportError:无法导入名称设置

橙色3:ImportError:无法导入名称'_variable'

如何停止获取 ImportError:将 django 与 wsgi 一起使用时无法导入设置“mofin.settings”?

ImportError:无法导入名称 NUMPY_MKL

无法导入 Torch (ImportError: libcudart.so.10.0)

Python urllib3 错误 - ImportError:无法导入名称 UnrewindableBodyError