【问题标题】:Could not import settings 'live.settings' (Is it on sys.path?): No module named billiard.exceptions无法导入设置“live.settings”(是否在 sys.path 上?):没有名为 billiard.exceptions 的模块
【发布时间】:2013-03-08 00:00:57
【问题描述】:

我正在尝试在 Ubuntu(EC2 实例)上将我的 django 项目设置为生产环境,但出现以下错误。我的路径是 100% 正确的,并且我已经查找了具有相同类型问题的其他 stackoverflow 问题,但似乎没有任何帮助。我想我可能有不同的问题。

任何人都可以发现任何错误或知道我的问题导致此错误吗?

**运行 Django 1.5

Ubuntu 12.04.2 LTS**

错误:

文件“/usr/local/lib/python2.7/dist-packages/django/conf/_init_.py”,第 132 行,在 _init _ raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) [客户端 37.191.99.202] ImportError:无法导入设置“live.settings”(是否在 sys.path 上?):没有名为 billiard.exceptions 的模块

wsgi

import os, sys
sys.path.append('/srv/projects/liveSMS')
sys.path.append('/srv/projects/liveSMS.live')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "live.settings")


import django.core.handlers.wsgi

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

站点(domain.com 不是真正的域)

<VirtualHost *:80>
   ServerName  domain.com
   ServerAlias domain.com

   DocumentRoot /srv/projects/liveSMS/public

   WSGIScriptAlias / /srv/projects/liveSMS/apache/django.wsgi
   <Directory /srv/projects/liveSMS/>
      Order allow,deny
      Allow from all
   </Directory>

    Alias /robots.txt /srv/projects/liveSMS/public/robots.txt
    Alias /static /srv/projects/liveSMS/static

     ErrorLog /srv/projects/liveSMS/logs/error.log
</VirtualHost>

完全错误

[Tue Mar 19 10:31:40 2013] [error] [client 37.191.99.202]     raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
[Tue Mar 19 10:31:40 2013] [error] [client 37.191.99.202] ImportError: Could not import settings 'live/settings' (Is it on sys.path?): Import by filename is not supported.
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202] mod_wsgi (pid=1488): Exception occurred processing WSGI script '/srv/projects/liveSMS/apache/django.wsgi'.
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202] Traceback (most recent call last):
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202]   File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 236, in __call__
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202]     self.load_middleware()
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202]   File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 45, in load_middleware
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202]     for middleware_path in settings.MIDDLEWARE_CLASSES:
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202]   File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 52, in __getattr__
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202]     self._setup(name)
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202]   File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 47, in _setup
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202]     self._wrapped = Settings(settings_module)
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202]   File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 132, in __init__
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202]     raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
[Tue Mar 19 10:39:14 2013] [error] [client 37.191.99.202] ImportError: Could not import settings 'live.settings' (Is it on sys.path?): No module named billiard.exceptions
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202] mod_wsgi (pid=1656): Exception occurred processing WSGI script '/srv/projects/liveSMS/apache/django.wsgi'.
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202] Traceback (most recent call last):
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202]   File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 236, in __call__
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202]     self.load_middleware()
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202]   File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 45, in load_middleware
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202]     for middleware_path in settings.MIDDLEWARE_CLASSES:
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202]   File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 52, in __getattr__
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202]     self._setup(name)
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202]   File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 47, in _setup
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202]     self._wrapped = Settings(settings_module)
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202]   File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 132, in __init__
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202]     raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
[Tue Mar 19 11:14:53 2013] [error] [client 37.191.99.202] ImportError: Could not import settings 'live.settings' (Is it on sys.path?): No module named billiard.exceptions

【问题讨论】:

  • 我使用 apache2 libapache2-mod-wsgi 安装的?
  • 不知道uwsgi是什么对不起。
  • 尝试在 WSGIPythonPath 的帮助下将路径添加到您的 apache 配置中。使用 : 作为分隔符:docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi
  • 您是否有完整的错误转储(行但在 django/conf/_init_.py 中有错误)?
  • 我刚试过 WSGIPythonPath /srv/projects/liveWireSMS 但同样的错误。我没有使用 vertualenv,因为这是生产方式并托管一个站点

标签: django


【解决方案1】:

可能在您的配置中,路径 /srv/projects/liveSMS 和 /srv/projects/liveSMS.live 必须位于 PYTHONPATH 变量中。

例如,您可以将其永久添加到启动 Apache 网络服务器的用户的 .bashrc 文件中:

PYTHONPATH='/srv/projects/liveSMS/:/srv/projects/liveSMS.live/'。

我不确定建议的解决方案是否最好。但它可以工作。

【讨论】:

  • 我通过创建一个新用户并添加 WSGIDaemonProcess DOMAIN user=USER group=USER processes=1 threads=15 maximum-requests=10000 python-path=/srv/liveSMS/venv/lib 让它工作/python2.7/site-packages python-eggs=/srv/liveSMS/run/eggs WSGIProcessGroup DjangoWeb WSGIScriptAlias / /srv/liveSMS/app/conf/apache/django.wsgi
  • @Spike 'python-path' 有问题吗?如果您删除它,它是否有效?
  • 是的,似乎是运行它的用户。我创建了一个新用户,更改为在该用户下运行,然后向该用户添加了 bashrc python 路径,正如您向我展示的那样。这似乎解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
  • 2014-03-29
  • 2015-10-14
  • 2014-06-04
  • 1970-01-01
  • 2012-08-09
相关资源
最近更新 更多