无法解决系统路径错误;模块缺失
我一直在遇到一个错误,提示说某个模块没有安装,但其实它是安装好的。希望能得到一些帮助。
我查了一下,发现有人建议可以通过扩展系统路径来解决这个错误,把应用程序的目录加进去。我觉得这应该是通过WSGI文件里的sys.path指令来处理的:
import os, sys
sys.path.append('/home/osqa')
sys.path.append('/home/osqa/trunk')
os.environ['DJANGO_SETTINGS_MODULE'] = 'trunk.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
错误信息大概是这样的:
[info] mod_wsgi (pid=15737): Attach interpreter ''.
[info] mod_wsgi (pid=15737): Create interpreter 'trunk|'.
[info] [client 172.31.0.6] mod_wsgi (pid=15737, process='OSQA', application='trunk|'):
Loading WSGI script '/home/osqa/trunk/apache/django.wsgi'.
[error] [client 172.31.0.6] mod_wsgi (pid=15737): Exception occurred processing WSGI
script '/home/osqa/trunk/apache/django.wsgi'.
[error] [client 172.31.0.6] Traceback (most recent call last):
[error] [client 172.31.0.6] File "/usr/lib/python2.6/site-
packages/django/core/handlers/wsgi.py", line 230, in __call__
[error] [client 172.31.0.6] self.load_middleware()
[error] [client 172.31.0.6] File "/usr/lib/python2.6/site-
packages/django/core/handlers/base.py", line 42, in load_middleware
[error] [client 172.31.0.6] raise exceptions.ImproperlyConfigured('Error importing
middleware %s: "%s"' % (mw_module, e))
[error] [client 172.31.0.6] ImproperlyConfigured: Error importing middleware
forum.middleware.extended_user: "No module named markdown"
而Apache的配置看起来是这样的:
WSGISocketPrefix run/wsgi
<VirtualHost *:80>
ServerAdmin xxx@xxx.com
DocumentRoot /home/osqa/trunk
ServerName trunk
CustomLog logs/osqa.access.log common
ErrorLog logs/osqa.error.log
WSGIScriptAlias / /home/osqa/trunk/apache/django.wsgi
<Directory> /home/osqa/trunk/apache>
Order deny,allow
Allow from all
</Directory>
WSGIDaemonProcess OSQA
WSGIProcessGroup OSQA
Alias /m/ /home/osqa/trunk/forum/skins/
<Directory /home/osqa/trunk/forum/skins>
Order deny,allow
Allow from all
</Directory>
Alias /upfiles/ /home/osqa/trunk/forum/upfiles/
<Directory /home/osqa/trunk/forum/upfiles>
Order deny,allow
Allow from all
</Directory></VirtualHost>
forum.middleware.extended_user的代码大概是这样: from django.contrib.auth.middleware import AuthenticationMiddleware from django.contrib.auth import logout from forum.models.user import AnonymousUser from forum.views.auth import forward_suspended_user import logging
class ExtendedUser(AuthenticationMiddleware):
def process_request(self, request):
super(ExtendedUser, self).process_request(request)
if request.user.is_authenticated():
try:
request.user = request.user.user
if request.user.is_suspended():
user = request.user
logout(request)
return forward_suspended_user(request, user)
return None
except Exception, e:
import traceback
logging.error("Unable to convert auth_user %s to forum_user: \n%s" % ( request.user.id, traceback.format_exc()
))
request.user = AnonymousUser()
return None
1 个回答
0
你能把这个抛出异常的中间件发出来吗?这样我们就能看看它到底在尝试导入什么。
听起来它是在导入markdown,而你的路径里没有这个东西。通常情况下,这个东西会安装在你的site-packages
目录里,而不是在你的项目里面。
试试运行pip install markdown
来安装它。
更新:你说它肯定已经安装了。那请问markdown安装在哪里呢?