【问题标题】:Import error with Django ProjectDjango项目导入错误
【发布时间】:2015-01-11 17:14:54
【问题描述】:

我的 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 正在尝试在我的虚拟环境中导入我的 requests 模块而不是 requests 模块并且由于它没有 HTTPError 类而失败。

我的直接猜测是我的 django 网站进入了 PYTHONPATH。看着 sys.path,我没有看到任何有罪的东西。我的应用程序称为 spastub。

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']

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

谢谢!

【问题讨论】:

    标签: python django


    【解决方案1】:

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

    【讨论】:

    • 我知道我可以命名我的应用程序,但为什么这有必要? sys.path 不决定模块分辨率吗?如果是这样,为什么系统会在虚拟环境中的请求模块之前找到我的请求模块?
    • 据我所知,总是首先查看工作文件夹,即 sys.path 中的 ''。
    • 我最终只是更改了应用程序的名称。重做所有导入的想法听起来像是一场噩梦
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多