Django 项目导入错误

Import error with Django Project

我的 Django 项目目录结构如下所示:

/sparestub
//registration
//messages
//tickets
//requests
//venv

还有很多其他文件夹,但您明白了。我的虚拟环境中安装的模块之一是请求。请注意,我的应用程序也有一个名为 requests 的模块。 requests 模块由安装在我的虚拟环境中的另一个模块 djrill 使用。每当我尝试启动我的服务器时,我都会收到以下错误:

  File "/Users/me/Documents/coding/sparestub/venv/lib/python3.4/site-packages/djrill/__init__.py", line 5, in <module>
from djrill.exceptions import MandrillAPIError, NotSupportedByMandrillError
  File "/Users/me/Documents/coding/sparestub/venv/lib/python3.4/site-packages/djrill/exceptions.py", line 1, in <module>
from requests import HTTPError
ImportError: cannot import name 'HTTPError'

我怀疑 djrill 正在尝试导入我的请求模块而不是虚拟环境中的请求模块,但失败了,因为它没有 HTTPError class。

我的直接猜测是我的 django 网站进入了 PYTHONPATH。看着 sys.path,我没有看到任何有罪的地方。我的应用叫做 sparestub。

Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 00:54:21) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/Users/me/Documents/coding/sparestub/venv/lib/python34.zip',
'/Users/me/Documents/coding/sparestub/venv/lib/python3.4',
'/Users/me/Documents/coding/sparestub/venv/lib/python3.4/plat-darwin',
'/Users/me/Documents/coding/sparestub/venv/lib/python3.4/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4',
'/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin',
'/Users/me/Documents/coding/sparestub/venv/lib/python3.4/site-packages',
'/Users/me/Documents/coding/sparestub/venv/lib/python3.4/site-packages/newrelic-2.40.0.34']

请注意倒数第二行是站点包。我希望导入请求语句在这里找到请求模块而不是我的请求模块。如果您对发生这种情况的原因有任何解释,我很乐意提供帮助。

谢谢!

您可以将所有 Django 应用程序放入 apps 文件夹,这样您就可以将它们引用为 apps.requests,这将不再与请求库冲突。