我的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目录中的模块?
答案 0 :(得分:1)
您可以将本地django文件夹转换为命名空间。这告诉python解释器继续遍历模块的路径,即使它之前找到了匹配的模块(即你添加的'django'模块)。
将其添加到本地django文件夹中的__init__.py:
import pkg_resources
pkg_resources.declare_namespace(__name__)
当python找到此模块时,它会运行此代码将其注册为命名空间。
答案 1 :(得分:0)
您需要将PYTHONPATH环境变量设置为指向本地模块。