【问题标题】:error on running my application in Django with mod_python使用 mod_python 在 Django 中运行我的应用程序时出错
【发布时间】:2010-09-13 10:46:22
【问题描述】:

我有 win32、python2.5、django1.2、apache2.2 和 mod_python3.3.1

我已经正确安装了 mod_python。 现在我的应用程序名称是 myapp.setting,路径是 c:\myapp.setting。在 myapp.settings 我的文件是 myapp.settings\url.py,settings.py 等。

现在在 apache httpd.conf 文件中我有以下更改:-

<Location "/mysite">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE myapp.settings
    PythonDebug On
    PythonPath "['/'] + sys.path"
</Location>

我在 PythonPath 中尝试了许多更改。但是当我输入http://localhost/mysite 时,错误如下:-

MOD_PYTHON 错误

ProcessId:      1384
Interpreter:    '192.168.1.166'

ServerName:     '192.168.1.166'
DocumentRoot:   'C:/Program Files/Apache Software Foundation/Apache2.2/htdocs'

URI:            '/mysite'
Location:       '/mysite'
Directory:      None
Filename:       'C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/mysite'
PathInfo:       ''

Phase:          'PythonHandler'
Handler:        'django.core.handlers.modpython'

Traceback (most recent call last):

  File "C:\Python25\Lib\site-packages\mod_python\importer.py", line 1537, in HandlerDispatch
    default=default_handler, arg=req, silent=hlist.silent)

  File "C:\Python25\Lib\site-packages\mod_python\importer.py", line 1229, in _process_target
    result = _execute_target(config, req, object, arg)

  File "C:\Python25\Lib\site-packages\mod_python\importer.py", line 1128, in _execute_target
    result = object(arg)

  File "C:\Python25\Lib\site-packages\django\core\handlers\modpython.py", line 228, in handler
    return ModPythonHandler()(req)

  File "C:\Python25\Lib\site-packages\django\core\handlers\modpython.py", line 191, in __call__
    self.load_middleware()

  File "C:\Python25\Lib\site-packages\django\core\handlers\base.py", line 33, in load_middleware
    for middleware_path in settings.MIDDLEWARE_CLASSES:

  File "C:\Python25\Lib\site-packages\django\utils\functional.py", line 276, in __getattr__
    self._setup()

  File "C:\Python25\Lib\site-packages\django\conf\__init__.py", line 40, in _setup
    self._wrapped = Settings(settings_module)

  File "C:\Python25\Lib\site-packages\django\conf\__init__.py", line 75, in __init__
    raise ImportError("Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e))

ImportError: Could not import settings 'myapp.settings' (Is it on sys.path? Does it have syntax errors?): No module named myapp.settings

请帮助我,我是 Django 的新手...

【问题讨论】:

  • 您将您的项目称为myapp.settings?这是错误的,你的应用程序应该被称为 app 并且 settings.py 应该是项目中的文件,它现在的方式设置可能位于myapp.settings.settings,并且你不能在 python AFAIK 中的包名称中包含点。
  • 感谢您的建议,我已将应用程序名称 myapp.settings 更改为 myapp。但它仍然给出错误“ImproperlyConfigured: Error importing middleware myproject.FacebookConnectMiddleware: “No module named myproject.FacebookConnectMiddleware”我想在站点中使用 facebook connect。
  • myproject.FacebookConnectMiddleware 可能在myproject 内的某个文件中,因此将该文件名插入到模块路径中。类似:myproject.filename.FacebookConnectMiddlewaremyproject.FacebookConnectMiddleware 使它看起来像实际的中间件代码在项目中 __init__.py

标签: python django apache mod-python


【解决方案1】:

正如 rebus 在他的评论中所说,将您的项目称为“myapp.settings”是无稽之谈。它既不是应用程序(它是站点的一个组件),也不是设置文件。称它为明智的 - 如果你真的想不出任何东西,就称它为“我的网站”。

不过,最后,您不应该使用 mod_python。请改用 mod_wsgi。

【讨论】:

  • 谢谢丹尼尔,但如果你能在 mod_python 中给我解决方案,那么它对我来说会很容易......
  • @rohitbansal2009 mod_python 不再被积极开发,因此您不能期望任何高质量的支持。此外,您的项目有几个问题,开始修改它们的最佳方法是,如答案中所建议的,将您的项目重命名为合理的名称,也许 mod_python 问题将不再存在,或者您将更清楚地了解问题所在.
猜你喜欢
  • 2017-11-12
  • 2014-10-09
  • 1970-01-01
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
  • 2019-02-25
  • 2010-10-04
相关资源
最近更新 更多