【发布时间】:2015-03-19 06:37:45
【问题描述】:
我正在将一个 Web 应用程序从 Windows 环境迁移到 CentOS 5.11 和 Apache,并且安装了所有东西后,当我尝试加载该站点时,我收到了 500。错误日志显示如下:
mod_wsgi (pid=5461): Target WSGI script '/usr/local/treehouse/wsgi/index.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=5461): Exception occurred processing WSGI script '/usr/local/treehouse/wsgi/index.wsgi'.
Traceback (most recent call last):
File "/usr/local/treehouse/wsgi/index.wsgi", line 11, in <module>
from django.core.wsgi import get_wsgi_application
ImportError: No module named 'django.core.wsgi'
我找到了this question(和相关的),看起来很相似,但那里的答案都没有解决问题。我没有在virtualenv 中运行,django 似乎安装正确,因为我可以运行有问题的语句:
>>> from django.core.wsgi import get_wsgi_application
在交互式 Python 解释器中,它可以工作很好。这是导致错误的脚本(它只是默认的index.wsgi,您在寻找这些东西的任何地方都会看到):
import os, sys
sys.path.append('/usr/local/treehouse/apple')
sys.path.append('/usr/local/treehouse/apple/apple')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "apple.settings")
from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
显然最后一行会导致错误,但有趣的部分是:最后一行仍然是问题,即使我在它上面添加了这个:
import django.core
import django.core.handlers
两个底层包都可以顺利导入(django.core.wsgi 只是django.core.handlers.wsgi 中某些功能的薄包装)。只有当我尝试访问 wsgi 包时才会出现问题。在此脚本中检查 sys.path 会显示所有正确的目录(/usr/local/lib/python3.4/site-packages 等)。同样,从交互式解释器运行完全相同的代码不会导致错误。
我尝试卸载/重新安装 django (pip install django==1.6.5),然后将 VM 重置为完全干净的快照并重建/重新安装所有内容,但我仍然得到完全相同的行为。
发生了什么事?
【问题讨论】:
标签: python django apache centos mod-wsgi