【问题标题】:Cannot import module from another module, but can so from a third module (all in different packages)无法从另一个模块导入模块,但可以从第三个模块导入(都在不同的包中)
【发布时间】:2016-11-03 02:30:06
【问题描述】:

我的设置:

project
    extract (package)
    -> extract_step.py 

    text (package)
    -> paragraph.py

    util (package)
    -> paths.py

所有三个包中都有空的__init__.py。如果重要,PyDev 还会显示带有包图标的包。 在 extract_step.py 我可以像这样导入:

from text.paragraph import Paragraph

并实例化 Paragraph 对象并使用它们。

在paths.py中我尝试以完全相同的方式导入,但我得到:

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

我正在使用 Eclipse 和 PyDev 5.3。蟒蛇 3.5.2。 我在 Eclipse 中的 PYTHONPATH 只有:

/${PROJECT_DIR_NAME}

我可以毫无问题地运行 extract_step.py,但我无法在没有收到错误消息的情况下运行 paths.py(即使导入是 paths.py 中的唯一行)。我可以做些什么来解决这个问题以及为什么会发生这种情况?

编辑: 我尝试制作一个带有新模块 test.py 的新包。我可以进口!我也尝试在 util 包中创建一个新模块,但它也不起作用。

【问题讨论】:

  • __init__.py添加到所有目录,即extracttextutil
  • 三个都有,都是空的。
  • 对不起。我没有读到你问题的那一部分。可以把pyc的文件全部删掉再运行吗?
  • 我都删了,还是一样的问题。我还在删除它们后重新启动了 Eclipse,以防万一。
  • 有趣的是,我使用 Python 2.7 复制了相同的目录结构,但是当我运行 python extract/extract_step.py 时出现错误

标签: python eclipse pydev


【解决方案1】:

解决方案(修复它):

我删除了util 包。 我重新创建了包和paths.py。 现在可以了。 这回答了我的问题的“我该如何解决这个问题”部分,而不是为什么。

如果有人知道为什么会这样,我会接受他们的回答,但现在,如果有人遇到同样的问题,我就是这样解决的。

【讨论】:

  • 我的猜测是您使用的是 Python 2.7 并且偶然在 util 中使用了 text.py,这是作为相对导入获得的(仅在 Python 3 中,所有导入都是绝对的,尽管您可以放置​​ @987654324 @ 在你的模块顶部强制导入在 Python 2.7 上也是绝对的)。
猜你喜欢
  • 2019-07-03
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
  • 2019-08-08
  • 2019-12-22
  • 2020-05-18
相关资源
最近更新 更多