【问题标题】:ImportError: No module named <module_name>ImportError:没有名为 <module_name> 的模块
【发布时间】:2012-03-31 20:44:57
【问题描述】:

我是一名 Java 程序员,我开始用 python 开发一些模块。 我试图用包划分抽象层,但不幸的是,根包(hokuspokus.py)中有一个类试图访问一些 内部包 (videofactory.py) 中的类,并引发错误 ImportError: No module named media.videofactory。

我还做了一个测试,我的所有文件都在同一个包 (hokuspokus) 上,一切运行良好:(

我在 PyDev 中使用 Python 2.7、Windows 和 Aptana Studio 3。

我检查了我的 PYTHONPATH 并且项目的根文件夹作为源文件夹存在。 我用我的所有代码为这个模块和 pydev 配置创建了一个谷歌代码项目:http://code.google.com/p/hokuspokus-py/source/checkout

Package Structure:
HokusPokus (source folder)
|
----hokuspokus (root package)
    |
    --- media (inner package)
    |   |
    |   ----videofactory.py
    |
    |
    ---- hokuspokus.py

【问题讨论】:

  • +1 用于实际提供SSCCE,甚至链接到它。但是,我找不到hokuspokus/media/mediafactory.py
  • 从 Aptana Studio 或 shell 运行代码时是否收到错误?
  • @burhan 我从 Aptana 运行
  • @phihag 对不起,我放了我本地项目的例​​子。我更新了名称以匹配谷歌的代码。
  • media 目录包含videofactory.py 文件,其中包含VideoFactory 类.. 没有这样的mediafactory.py 存在

标签: python module pydev python-2.7


【解决方案1】:

尝试:

from media.videofactory import VideoFactory

从你的模块中导入具体的类 如果您想导入模块中的所有元素,您可以使用:

from media.videofactory import *

但这不是最好的方法。

【讨论】:

  • 是的!有效。有趣的是,我所有的导入都是使用 eclipse CTRL+SHIFT+O 中的经典热键完成的,对于根类,它添加了from hokuspokus.media.videofactory import VideoFactory。我确实像你说的那样,我从 importev 中删除了根包(hokuspokus),一切运行良好。谢谢