【问题标题】:Could not import settings 'myproject.settings' (Is it on sys.path?): No module named pinax无法导入设置“myproject.settings”(是否在 sys.path 上?):没有名为 pinax 的模块
【发布时间】:2012-02-19 20:49:19
【问题描述】:

我正在尝试让 pinax 在 WebFaction 上工作并遇到很多问题...

[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] mod_wsgi (pid=22796): Exception occurred processing WSGI script '/home/pawesome/webapps/qtsocial/myproject.wsgi'.
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] Traceback (most recent call last):
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]   File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/core/handlers/wsgi.py", line 250, in __call__
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]     self.load_middleware()
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]   File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/core/handlers/base.py", line 39, in load_middleware
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]     for middleware_path in settings.MIDDLEWARE_CLASSES:
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]   File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/utils/functional.py", line 276, in __getattr__
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]     self._setup()
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]   File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/conf/__init__.py", line 42, in _setup
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]     self._wrapped = Settings(settings_module)
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]   File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/conf/__init__.py", line 89, in __init__
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]     raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] ImportError: Could not import settings 'myproject.settings' (Is it on sys.path?): No module named pinax

wsgi:

import os
import sys

from django.core.handlers.wsgi import WSGIHandler

os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
application = WSGIHandler()

wsgi 与 myproject 位于同一文件夹中,而 settings.py 肯定在 myproject 中。那么是什么给出的呢?

编辑:

好的,所以我从这里和 webfaction 那里得到了建议,现在 wsgi 看起来像这样......

import os
import sys
from site import addsitedir
from django.core.handlers.wsgi import WSGIHandler

os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
sys.path.append('/home/pawesome/webapps/qtsocial/myproject')
sys.path.append('/home/pawesome/webapps/qtsocial')

addsitedir('/home/pawesome/envs/pinax072/lib/python2.6/site-packages')
application = WSGIHandler()

我认为这解决了一些问题,但不是所有问题......现在我得到......

[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] mod_wsgi (pid=15572): Exception occurred processing WSGI script '/home/pawesome/webapps/qtsocial/myproject.wsgi'.
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] Traceback (most recent call last):
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1]   File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/core/handlers/wsgi.py", line 250, in __call__
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1]     self.load_middleware()
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1]   File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/core/handlers/base.py", line 47, in load_middleware
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1]     raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e))
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] ImproperlyConfigured: Error importing middleware django_openid.consumer: "No module named voting_extras"

再次感谢伙计们...WebFaction 的人最近放弃了并告诉我来这里,即使我已经大声笑了

【问题讨论】:

    标签: python django pinax


    【解决方案1】:

    在您的终端中,cd 进入包含 settings.py 的目录,然后运行

    python settings.py
    

    您可能会遇到很容易修复的导入错误(键入错误或语法错误)。

    【讨论】:

      【解决方案2】:

      您是否尝试过将该文件夹显式添加到您的 PYTHONPATH 中?此外,您可能需要添加 both 项目文件夹和父文件夹。使用项目的路径将这些行添加到您的 wsgi 文件中:

      sys.path.append('/explicit/path/to/myproject')
      sys.path.append('/explicit/path/to')
      

      附:在application = WSGIHandler()line 之前执行此操作。

      更新:根据this,新错误似乎具有相同的原因。请仔细检查您的“voting_extras”应用程序在哪里,以及它的父文件夹是否存在于 PYTHONPATH 中。

      【讨论】:

      • 好的,所以我从这里以及从 webfaction 那里得到了建议,现在 wsgi 看起来像这样... import os import sys from site import addsitedir from django.core.handlers.wsgi import WSGIHandler os .environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' sys.path.append('/home/pawesome/webapps/qtsocial/myproject') sys.path.append('/home/pawesome/webapps/qtsocial') addsitedir ('/home/pawesome/envs/pinax072/lib/python2.6/site-packages') application = WSGIHandler()
      • @milktrey 根据 webfaction 的一些信息更新了答案,希望对您有所帮助...
      【解决方案3】:

      我认为你需要将你的东西添加到 PYTHONPATH 中。我添加了我的项目,它是 virtualenv。 这是每个项目的 wsgi 外观示例。

      import sys
      import site
      import os
      
      envpath = '/development/myproject/env/lib/python2.7/site-packages'
      
      # we add currently directory to path and change to it
      pwd = os.path.dirname(os.path.abspath(__file__))
      os.chdir(pwd)
      sys.path = [pwd] + sys.path
      
      # Append paths
      site.addsitedir(envpath)
      
      # now start django
      from django.core.handlers.wsgi import WSGIHandler
      os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
      application = WSGIHandler()
      

      【讨论】:

        【解决方案4】:

        有 2 个问题,

        1. virtualenv 应该在 ~/apache2/bin/start 中加载这些行,

          WORKON_HOME=/home/pawesome/envs/pinax072/ . $WORKON_HOME/bin/activate

        2. 您应该使用 pinax 提供的 wsgi 文件,而不是我们的安装程序提供的文件,因为 pinax 有一些需要的自定义路径代码,

          #WSGIScriptAlias / /home/pawesome/webapps/qtsocial/myproject.wsgi WSGIScriptAlias / /home/pawesome/webapps/qtsocial/myproject/deploy/pinax.wsgi

        【讨论】:

          【解决方案5】:

          根据https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/#using-a-virtualenv,只需在 Apache 配置或站点配置(VirtualHost 指令之外)中添加站点包和 python 站点包目录的路径

          WSGIPythonPath /path/to/mysite.com:/path/to/your/venv/lib/python2.X/site-packages

          对我来说是:

          WSGIPythonPath /var/www/djtest:/usr/local/lib/python2.7/site-packages

          【讨论】:

            【解决方案6】:

            我也遇到过类似的问题。就我而言,我有一个顶级配置文件夹,一般 settings.py 文件所在的位置。在 myproject 文件夹中,我有第二个设置,我尝试导入 config.settings 文件。

            在我的情况下,问题是 python 在 myproject.config 文件夹而不是 top level config 中查找。

                # project structure
                config/
                    settings.py
                    constans.py
                myproject/
                    config/
                        constants.py
                    settings.py
                    manage.py
                    urls.py
            

            错误:ImportError:无法导入设置“myproject.settings”(是 它在 sys.path 上?):没有名为 settings 的模块

            解决方案:我删除/移动了 myproject/config 文件夹。

            【讨论】:

              【解决方案7】:

              使用 Pycharm。我关闭了“将内容根添加到 PYTHONATH”和“将源根添加到 PYTHONATH”。它有效。

              【讨论】:

                猜你喜欢
                • 2013-03-08
                • 2013-09-06
                • 1970-01-01
                • 1970-01-01
                • 2014-03-29
                • 2015-10-14
                • 2014-06-04
                • 1970-01-01
                • 2012-08-09
                相关资源
                最近更新 更多