Python总是给我一个ImportError

时间:2014-08-07 09:46:25

标签: python django import

我有两个目录,分别是bumblebee.new和bumblebee。 bumblebee.new/bumblebee/app.py想要从bumblebee/bumblebee导入一些文件。 一开始,我遇到了ImportError: No module named bumblebee。将bumblebee/bumblebee添加到syspath后,它变为:

File "app.py", line 12, in <module>
    from bumblebee import botqueueapi
  File "/root/bumblebee/bumblebee/bumblebee.py", line 23, in <module>
    import botqueueapi
  File "/root/bumblebee.new/bumblebee/botqueueapi.py", line 12, in <module>
    from bumblebee import hive
ImportError: cannot import name hive

如何解决这些问题?为什么不能导入这些文件? 谢谢你的建议和意见!

1 个答案:

答案 0 :(得分:1)

Python的导入系统有点乱,因此你可以得到名称冲突:你在该项目中使用“bumblebee”三次,这对Python来说很困惑。导入“来自bumblebee import hive”现在解释在顶级模块而不是本地文件。这意味着它试图从不同的位置导入“hive”而不是你想象的那样。

两条经验法则:

  • 始终从顶级目录运行Python项目。所以“python full / path / to / my / file.py”
  • 始终完全写入导入,所以“从full.path.to.my.file导入foo”而不是“从文件导入foo”。

现在,您不必遵循这些规则,但您必须知道在这种情况下您正在做什么。上述规则应避免名称冲突。