2012-06-16 63 views
2

我试图让Django运行在Apache2.22上的mod_wsgi,但是我得到一个内部500错误。 我知道还有其他问题,但他们没有我的具体错误。这是我回溯:由于Python问题,Django WSGI脚本不会加载

[Sat Jun 16 02:17:48 2012] [info] [client 128.227.11.143] mod_wsgi (pid=23071, process='partender', application='www.***.com|'): Loading WSGI script '/usr/home/***.com/zpencerq/part/apache/django.wsgi'. 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] mod_wsgi (pid=23071): Target WSGI script '/usr/home/***.com/zpencerq/part/apache/django.wsgi' cannot be loaded as Python module. 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] mod_wsgi (pid=23071): Exception occurred processing WSGI script '/usr/home/***.com/zpencerq/part/apache/django.wsgi'. 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] Traceback (most recent call last): 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] File "/usr/home/partender.myprotosite.com/zpencerq/part/apache/django.wsgi", line 9, in <module> 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143]  import django.core.handlers.wsgi 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 2, in <module> 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143]  from threading import Lock 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] File "/usr/local/lib/python2.7/threading.py", line 15, in <module> 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143]  from collections import deque 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] File "/usr/local/lib/python2.7/collections.py", line 9, in <module> 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143]  from operator import itemgetter as _itemgetter 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] ImportError: /usr/local/lib/python2.7/lib-dynload/operator.so: Undefined symbol "_PyUnicodeUCS4_AsDefaultEncodedString" 

它似乎是与Python的问题,但我不知道做什么用的追溯,去年的错误。这是python安装的问题吗? 我已经完成了简单的WSGI Hello World应用程序,并且工作得很好。这是一个与Django调用的问题。

我用“LDD”上mod_wsgi.so,得到了以下的输出:

[email protected]# ldd mod_wsgi.so 
mod_wsgi.so: 
ldd: mod_wsgi.so: Shared object "mod_wsgi.so" not found, required by "ldd" 
mod_wsgi.so: exit status 1 
+0

作为参考,'ldd'应该在Apache安装中的mod_wsgi.so上运行。 IOW,给出一个完整的路径或在同一个目录中。请参阅http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation#Python_Shared_Library –

+0

我在同一个目录中。我正在采取这种反应,因为mod_wsgi.so使用的是Python静态库而不是共享。 –

+0

没有这样的事情。它说ldd在你所在的目录中找不到名为mod_wsgi.so的文件。如果它是静态链接的,它仍然会生成输出,但不会显示对libpythonX.Y.so的依赖。 –

回答

2

最有可能你的mod_wsgi的编译对一个Python安装,但你试图迫使它使用不同的Python安装。您遇到问题的原因是因为一个Python安装是使用UCS2支持和其他UCS4编译的。

在mod_wsgi.so上使用'ldd'来显示它尝试使用的Python安装,然后将该信息作为问题的一部分与mod_wsgi配置或WSGI脚本内容一起提供,您尝试强制它使用不同的Python安装或不兼容的虚拟环境。

+0

我添加了输出 –

+1

这个特定问题是由于Python的不兼容版本vs什么mod_wsgi3编译! (运行2.7.2,mod_wsgi3编译为2.7.3)谢谢!我可能很快就会有另一个问题,并会单独发布。只想说谢谢格雷厄姆!我发现你就像是回答许多这些django/wsgi问题的主要人员,并且还找到了你的向导! –