我的wsgi.py文件中发生错误。它抱怨:

File "(directory)/.local/lib/python2.7/site-packages/Django-1.5 py2.7.egg/django/core/handlers/wsgi.py", line 9, in <module>
    from django import http
ImportError: cannot import name http


我检查了目录http是否存在于(目录)/。local / lib / python2.7 / site-packages / Django-1.5 py2.7.egg / django /中。同样,在导入django.core时也没有问题,但是在导入其他任何模块时,都会出现相同的错误。以下是(目录)/。local / lib / python2.7 / site-packages / Django-1.5 py2.7.egg / django /的目录信息:

django:
    bin  conf  contrib  core  db  dispatch  forms  http  __init__.py  __init__.pyc  middleware  shortcuts  template  templatetags  test  utils  views


这是http的目录信息:

http:
    cookie.py  cookie.pyc  __init__.py  __init__.pyc  multipartparser.py  multipartparser.pyc  request.py  request.pyc  response.py  response.pyc  utils.py  utils.pyc


编辑:

python shell中给出的错误:

>>from django import http
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name http

>>from django import core
>>


通过删除也称为django的本地目录解决了错误。但是,本地目录已存在,因为我将站点放置在共享服务器上,但无法编辑其站点包。应用程序是否可以从本地和服务器的django文件夹中读取文件,以便我可以使用不在服务器的django目录中的模块?

最佳答案

您可以将本地django文件夹转换为名称空间。这告诉python解释器继续遍历模块的路径,即使它早先找到了匹配的模块(即您添加的“ django”模块)也是如此。

将此添加到本地django文件夹中的__init__.py中:

import pkg_resources
pkg_resources.declare_namespace(__name__)


当python找到此模块时,它将运行此代码以将其注册为名称空间。

09-10 02:42
查看更多