Python django和mod_wsgi的配置问题
我在让django使用mod_wsgi在Apache2.2上工作时遇到了问题。 安装了Django,并且还安装了mod_wsgi。 我甚至可以在访问路径时看到404页面,并且可以登录到django管理员。 但如果我想安装标记模块,则会出现以下错误:Python django和mod_wsgi的配置问题,python,django,apache,mod-wsgi,Python,Django,Apache,Mod Wsgi,我在让django使用mod_wsgi在Apache2.2上工作时遇到了问题。 安装了Django,并且还安装了mod_wsgi。 我甚至可以在访问路径时看到404页面,并且可以登录到django管理员。 但如果我想安装标记模块,则会出现以下错误: Traceback (most recent call last): File "setup.py", line 49, in <module> version_tuple = __import__('tagging').VE
Traceback (most recent call last):
File "setup.py", line 49, in <module>
version_tuple = __import__('tagging').VERSION
File "/home/jim/django-tagging/tagging/__init__.py", line 3, in <module>
from tagging.managers import ModelTaggedItemManager, TagDescriptor
File "/home/jim/django-tagging/tagging/managers.py", line 5, in <module>
from django.contrib.contenttypes.models import ContentType
File "/usr/lib/python2.5/site-packages/django/contrib/contenttypes/models.py", line 1, in <module>
from django.db import models
File "/usr/lib/python2.5/site-packages/django/db/__init__.py", line 10, in <module>
if not settings.DATABASE_ENGINE:
File "/usr/lib/python2.5/site-packages/django/utils/functional.py", line 269, in __getattr__
self._setup()
File "/usr/lib/python2.5/site-packages/django/conf/__init__.py", line 40, in _setup
self._wrapped = Settings(settings_module)
File "/usr/lib/python2.5/site-packages/django/conf/__init__.py", line 75, in __init__
raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
ImportError: Could not import settings 'mysite.settings' (Is it on sys.path? Does it have syntax errors?): No module named mysite.settings
几天以来,我一直在努力让它发挥作用,并在这里阅读了一些博客和答案,但都没有效果
编辑:
现在我试过了,我的wsgi文件现在如下所示:
import sys
sys.path.insert(0, '/home/jim/django/mysite')
sys.path.insert(0, '/home/jim/django')
import settings
import django.core.management
django.core.management.setup_environ(settings)
utility = django.core.management.ManagementUtility()
command = utility.fetch_command('runserver')
command.validate()
import django.conf
import django.utils
django.utils.translation.activate(django.conf.settings.LANGUAGE_CODE)
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
管理员仍在工作,但我在尝试安装标记模块时遇到了相同的错误。你读过Graham Dumpleton的吗?它很好地描述了一些常见的配置问题,并特别涉及了
mysite.settings
与settings
更新:请阅读下面格雷厄姆·邓普尔顿的精彩评论
更新2:正如格雷厄姆和贝科明古鲁所指出的,问题根本不在于WSGI。相反,安装django tagging
时会出现问题。听取Becominguru的建议,首先使用pip
安装django tagging
- 因为您的管理员可以工作,所以wsgi的设置很好。不要费心修改/编辑它
python manage.py runserver 0:8080
然后将浏览器指向
http://yoursite.com:8080/
你必须看到完全相同的行为
那么
要调试此问题,请执行以下操作:
- 在服务器上的python shell上,尝试导入标记。显然,从您的回溯来看,
是它引发错误的地方,这就是为什么无法导入设置的原因导入标记
- 然后,只需删除包含标记的包,并使用下面的命令重新安装,它知道如何安装包
您能给我们显示settings.py的绝对路径吗?@Ruslan Spivak/home/jim/django/mysite/settings.py希望它能解决您的特定问题。仍然有相同的问题:/n那么您可能有权限问题。Apache作为特殊用户而不是您运行。因此,Django站点所在的目录,加上截至该点的所有父目录,Apache用户必须可以访问。如果您的主帐户上有rwx-----,则Apache将无法看到您帐户的内部。或者,如果站点正在工作,但添加此项时失败,则您可能只是在设置文件中引入了语法错误。张贴您修改的设置文件的部分。Hmmm,否。因为第二个WSGI导入方法导入WSGI脚本文件中的设置,如果其中有语法错误,您应该会收到不同的消息。顺便说一句,那篇博文并没有说要将“/home/jim/django”添加到sys.path中,只是站点目录本身。但在这种情况下,这并不重要。无论如何,这一切都无关紧要,因为我们刚刚意识到原始错误消息甚至不是来自mod_wsgi内部。它来自直接在“setup.py”上调用的python。你在哪里做的?如果在命令行上执行,看起来您没有正确设置PYTHONPATH。WSGI的东西是不相关的。导入标记不起作用,即使是使用开发服务器:Traceback(最近一次调用last):File“”,第1行,在ImportError中:没有名为taggingJimbo的模块:这正是我所预测的。你现在可以仔细阅读我的答案,来解决你的问题!以前从未使用过pip,但它确实有效。不知道是什么导致了这个问题。我希望它是特定的标签,这样我就不会在以后的另一个包中遇到同样的问题。。非常感谢。
python manage.py runserver 0:8080
http://yoursite.com:8080/
sudo pip install django-tagging