我的Django项目目录结构如下所示:
/sparestub
//registration
//messages
//tickets
//requests
//venv
还有很多其他文件夹,但你明白了。我的虚拟环境中安装的其中一个模块是请求。请注意,我的应用程序还有一个名为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类而失败。
我的直接猜测是我的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']
请注意,倒数第二行是针对site-packages的。我希望import requests语句在这里找到请求模块而不是我的请求模块。如果你对为什么会这样做有任何解释,我会很乐意帮助你。
谢谢!
答案 0 :(得分:1)
您可以将所有Django应用程序放入apps
文件夹,以便将它们称为apps.requests
,这将不再与请求库冲突。