Apache在Django的wsgi部署中出现ImportError: No module named _socket错误

5
我正在使用WSGI 3.3作为Python 2.7.3(32位)的Apache 2.2。我从http://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi-win32-ap22py27-3.3.so下载了wsgi,只是将其重命名并转移到了APACHE模块中。
我一直在尝试部署应用程序,但始终收到“ImportError:no module named _socket”错误。我已经包含了我的wsgi和错误日志。
我不确定我做错了什么。我想也许我可以包含一个PythonPath,但不确定。如果需要,我可以提供更多信息。预先感谢您。
APACHE配置:
LoadModule wsgi_module modules/mod_wsgi.so

<Directory C:/Users/xxxxd/Documents/cahd>
AllowOverride None
Options None
Order deny,allow
Allow from all
</Directory>

WSGIScriptAlias / C:/Users/xxxxd/Documents/cahd/cahd/django.wsgi

WSGI文件:

import os, sys    
sys.path.append('C:/Users/xxxxd/Documents)
sys.path.append('C:/Users/xxxxd/Documents/cahd/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'cahd.settings'
import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()

错误信息如下:
[Mon Nov 19 09:44:17 2012] [error] [client 127.0.0.1] Traceback (most recent call last):
[Mon Nov 19 09:44:17 2012] [error] [client 127.0.0.1] File "C:/Users/xxxxd/Documents/cahd/django.wsgi", line 10, in 
[Mon Nov 19 09:44:17 2012] [error] [client 127.0.0.1] import django.core.handlers.wsgi
[Mon Nov 19 09:44:17 2012] [error] [client 127.0.0.1] File "C:\django\Django-1.4.1\django\core\handlers\wsgi.py", line 8, in 
[Mon Nov 19 09:44:17 2012] [error] [client 127.0.0.1] from django import http
[Mon Nov 19 09:44:17 2012] [error] [client 127.0.0.1] File "C:\django\Django-1.4.1 \django\http\_init_.py", line 11, in 
[Mon Nov 19 09:44:17 2012] [error] [client 127.0.0.1] from urllib import urlencode, quote
[Mon Nov 19 09:44:17 2012] [error] [client 127.0.0.1] File "C:\Python27\Lib\urllib.py", line 26, in 
[Mon Nov 19 09:44:17 2012] [error] [client 127.0.0.1] import socket
[Mon Nov 19 09:44:17 2012] [error] [client 127.0.0.1] File "C:\Python27\Lib\socket.py", line 47, in 
[Mon Nov 19 09:44:17 2012] [error] [client 127.0.0.1] import _socket
[Mon Nov 19 09:44:17 2012] [error] [client 127.0.0.1] ImportError: No module named _socket

请查看http://brettweiss.wordpress.com/2008/11/28/windows-vista-django-dll-issue-running-python-managepy-runserver/ 是否存在相同的问题? - rorycl
不完全正确,我的应用程序通过runserver工作。实际上,即使是我的helloworld.wsgi也可以通过apache工作。只是当我修改httpd.conf以适应自己的应用程序时,会出现错误... - Sxkaur
请编辑您的问题,并添加您在Apache配置文件中添加了哪些mod_wsgi配置。还要指出您从哪里获取了mod_wsgi二进制文件以及在下载并重命名之前它的名称是什么。 - Graham Dumpleton
尝试重新安装Python,并确保它已安装为所有用户。这个问题曾经在Python 2.7.0(我想)中出现过,升级Python有所帮助。也许如果您曾经重新安装过,但在升级时没有为所有用户安装,可能会漏掉一些东西。 - Graham Dumpleton
3个回答

16
尽管重新安装Python可能有效,但我发现_socket是一个位于DLLs文件夹中的_socket.pyd文件,通过将其添加到我的Windows Python路径中,我能够让应用程序正常工作。感谢大家的帮助。

3
尝试将目录 "C:\Python27\DLLs" 添加到您的PYTHONPATH环境变量中。这解决了我系统上 _socket 的问题。如果您检查该文件夹,您可以找到一些文件,包括_socket.pyd。

0

嗨,当我重新安装Django和Python2.7.3时,遇到了这个问题,困扰了我将近两个小时。最终我通过删除Python 2.7.3并安装Python 2.7.6来解决它。希望对你也有用,祝好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接