Django MOD_PYTHON错误

Django MOD_PYTHON ERROR

提问人:Cato Johnston 提问时间:3/13/2009 更新时间:7/12/2012 访问量:4254

问:

我已经让 django 与 mod_python 一起运行了一段时间,但今天我收到以下错误

MOD_PYTHON ERROR

ProcessId:      4551
Interpreter:    'thatch'

ServerName:     'thatch'
DocumentRoot:   '/var/www/thatch'

URI:            '/'
Location:       '/'
Directory:      None
Filename:       '/var/www/thatch/'
PathInfo:       ''

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

Traceback (most recent call last):

  File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1537, in HandlerDispatch
    default=default_handler, arg=req, silent=hlist.silent)

  File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1202, in _process_target
    module = import_module(module_name, path=path)

  File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 304, in import_module
    return __import__(module_name, {}, {}, ['*'])

ImportError: No module named django.core.handlers.modpython

这是我的虚拟主机配置

<VirtualHost *:80>
  ServerName  thatch

  DocumentRoot /var/www/thatch

  <Location "/">
    SetHandler python-program
    PythonPath "['/var/www/thatch'] + sys.path"
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE thatch.settings
    PythonOption django.root /var/www/thatch
    PythonDebug On
  </Location>

  <Location "/media">
    SetHandler None
  </Location>

  <LocationMatch "\.(jpg|gif|png|css|js)$">
    SetHandler None
  </LocationMatch>

</VirtualHost>

知道为什么会发生这种情况吗?

Django mod-python

评论

0赞 Guðmundur H 3/13/2009
你能从 python shell 手动导入 django.core.handlers.modpython 吗?当我的某些 python 模块无法导入时,我遇到了像这样奇怪的导入问题,但我经常在尝试手动导入时遇到更多描述性错误。
0赞 Cato Johnston 3/13/2009
是的,我可以直接从 shell 导入它
0赞 Guðmundur H 3/13/2009
好的,那么你在 Apache 中的 Python 路径呢?可能是它已从您的系统范围路径更改。要测试它,你可以尝试使用 PythonPath 显式添加 Django 的路径。

答:

1赞 David Berger 3/13/2009 #1

我只能猜测您的问题可能是什么,但这里有两个标准检查:

  1. 在shell中从几个不同的工作目录导入modpython
  2. 更改用户(如果您设置了 root 以外的任何用户)并重复步骤 1

如果 #2 看起来比它的价值更麻烦,那么请尝试非常非常仔细地检查通往 modpython 的路径上每个文件夹的权限,以确保“其他”在过程中的每个阶段都具有读取访问权限。如果你已经将 django 移动到你的主目录中(就像我曾经做过的那样......不知道为什么,但遇到了同样的错误)这将是问题所在。您要么需要将其移回 apache 可以读取的目录,要么需要为其他目录添加读取权限。

0赞 Mintaka 5/30/2010 #2

就我而言,pytonpath 和访问权限还可以。 重新编译 python 后,此错误消失了。

配置: Gentoo
Django 1.1
Apache:

www-servers/apache-2.2.15 USE=“doc ssl suexec threads -debug -ldap (-selinux) -static” APACHE2_MODULES=“alias auth_basic authn_alias authn_anon authn_default authn_file authz_default authz_host authz_owner autoindex cache dav dav_fs dav_lock deflate dir disk_cache env 过期 ext_filter file_cache 过滤器标头包括 logio log_config mem_cache mime mime_magic 协商重写 setenvif speling 状态unique_id userdir usertrack vhost_alias -actions -asis -auth_digest -authn_dbd -authn_dbm -authz_dbm -authz_groupfile -authz_user -cern_meta -charset_lite -dbd -dumpio -ident -imagemap -log_forensic -proxy -proxy_ajp -proxy_balancer -proxy_connect -proxy_ftp -proxy_http -substitute -version“ APACHE2_MPMS=”worker -event -itk -peruser -prefork“
Python 2.6.4