【问题标题】:Python -- import from modules the same directoryPython - 从模块导入同一目录
【发布时间】:2013-07-16 16:34:16
【问题描述】:

我正在导入存储在 pylearn2/datasets/ 上的 python 类,当我在该目录中导入其他文件时说 OK,但是当我尝试导入我刚刚创建的名为 make_dataset.py 的文件时说:

无法导入 pylearn2.datasets.make_dataset 但可以导入 pylearn2.datasets。原始异常:没有名为 make_dataset 的模块

目录结构如下:

   pylearn2\
       __init__.py 
       datasets\
          __init__.py
          hepatitis.py
          matlab_dataset.py
          make_dataset.py
               ... 

你能解释一下为什么我会犯这个错误吗? 我也在使用 .yaml 文件:

!obj:pylearn2.train.Train {
    "dataset": !obj:pylearn2.datasets.make_dataset.Classificator {}
 }

【问题讨论】:

  • 能否请您出示您的进口声明?
  • @nio 我通过 .yaml 文件导入。你可以在问题的底部看到它:pylearn2.datasets.make_dataset.Classificator
  • datasets 目录中的__init__.py 中有什么内容?
  • @SethMMorton 什么都没有。它是空的,为什么?

标签: python import module directory yaml


【解决方案1】:

您的pylearn2\ 目录中可能缺少__init__.py 文件 There 是有关目录结构的一些信息。 There 是模块的官方文档。

【讨论】:

    【解决方案2】:

    在您的__init__.py 中,您需要导入目录中的模块。否则无法按照你描述的方式导入子模块。

    datasets/__init__.py:

    import hepatitis
    import matlab_dataset
    import make_dataset
    

    如果您的__init__.py 为空,您可以执行import pylearn2.datasets,然后然后从您的代码中访问子模块(即a = pylearn2.datasets.make_dataset.Classificator()),但实际上要执行import pylearn2.datasets.make_dataset 您需要导入__init__.py中的子模块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      相关资源
      最近更新 更多