【问题标题】:Importing a module under a module (pandas.io.data)在模块下导入模块(pandas.io.data)
【发布时间】:2014-12-29 10:01:33
【问题描述】:

我刚刚遇到了一些困扰我的事情。
我一直认为导入“父”模块应该导入它下的所有内容。
但是,运行时:

import pandas
pandas.io.data

我收到一个错误:AttributeError: 'module' object has no attribute 'data'

但是运行:

import pandas.io.data

没有错误,模块被导入。
有人可以解释一下这种行为吗?

【问题讨论】:

    标签: python pandas import module


    【解决方案1】:

    原因是pandas.iopandas 包的子模块。子包或子模块不会自动导入,但如果您愿意,可以在模块的 __init__.py 中执行此操作(通常您不想这样做)。

    Packaging 在 python 中相当简单。如果文件夹有__init__.py 文件,则将其视为一个包。在此文件中,您可以为您的包布置任何初始化例程。该文件也可以为空。如果您的包中的子文件夹包含自己的__init__.py,则该文件夹被视为子包。

    如果您查看pandas folder structure,您会发现io 是一个子包。主要的 __init__.py 不导入 pandas.io.data 这就是为什么你必须自己做。

    【讨论】:

      【解决方案2】:

      “import”不导入子模块。 你可以写:

      from pandas import *
      

      但不建议这样做,因为它违反了“显式优于隐式”的原则。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-08
        • 1970-01-01
        • 1970-01-01
        • 2015-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-07
        相关资源
        最近更新 更多