【问题标题】:Import error, No module named xxxx [duplicate]导入错误,没有名为 xxxx 的模块 [重复]
【发布时间】:2015-09-25 13:59:42
【问题描述】:

我有一个具有结构的项目

/example
../prediction
....__init__.py
....a.py

PYTHONPATH 指向 /example

现在我在终端中打开 python 并输入

import prediction

成功了,但是如果我输入

import prediction.a

返回错误

ImportError: No module named 'prediction.a'; 'prediction' is not a package

这是为什么呢?不是已经作为包导入了吗

【问题讨论】:

  • 您的工作目录中是否有可能优先使用的prediction.py 文件?如果你import prediction,那prediction.__file__是什么?
  • @larsks 你是对的,我有 prediction.py 在那里
  • @larsks 我可以建议您将您的评论作为答案吗?它解决了我的问题,但在 Google 搜索结果中只排在第 4 位;)
  • 我已经继续并添加了答案。
  • 重复,是的,但是这个问题和答案都更老,更简洁。

标签: python python-3.x


【解决方案1】:

如果当前目录中存在名称冲突的模块 (foo.py) 或包 (foo/__init__.py),可能会导致您看到的行为。

在您的情况下,我怀疑有一个名为 prediction.py 的文件,而您在 examples 目录中获取的是该文件而不是 prediction 包。

【讨论】:

  • 我一直在努力解决类似的问题……这解决了我的问题。谢谢。
  • 由于您的回答只解释了原因,但没有提出明确导入包的解决方案,这是否意味着 Python 无法这样做?
  • 我想这取决于你的意思。 Python 不通过绝对路径名导入文件,但您可以自行修改模块搜索路径以更改其搜索内容的顺序(或位置)。如果您想更详细地研究该问题,最好在 stackoverflow 上打开一个新问题。
猜你喜欢
  • 2017-02-20
  • 2016-07-20
  • 2018-02-04
  • 2022-01-24
  • 2016-03-31
  • 2016-11-14
  • 2019-12-17
  • 2018-07-10
  • 2015-11-30
相关资源
最近更新 更多