【问题标题】:Why does import <package> not work ,but import <package.submodule> work?为什么 import <package> 不起作用,但 import <package.submodule> 起作用?
【发布时间】:2023-01-21 02:38:28
【问题描述】:

我正在尝试使用一个名为 nilearn 的 python 包,但我认为这个问题可能会更普遍地发生,我只是想了解为什么会发生这种情况。如果有任何进一步的参考资料可以帮助我更深入地了解正在发生的事情,我将不胜感激。

intro nilearn tutorial 中的第一条指令是

import nilearn
print(nilearn.datasets.MNI152_FILE_PATH)

如果我尝试运行它,我会收到以下错误:

AttributeError: module 'nilearn' has no attribute 'datasets'

但是,如果我尝试以下代码,一切正常

import nilearn.datasets
print(nilearn.datasets.MNI152_FILE_PATH)

显然,nilearn 确实有一个名为 datasets 的子模块。为什么我只是import nilearn就不能用了。

更广泛地说,这种行为是特定于nilearn,还是更广泛地发生在 python 包中?究竟是怎么回事?

【问题讨论】:

    标签: python import module attributes attributeerror


    【解决方案1】:

    在 Python 中,当你导入某些东西时,你只导入那个模块。 “nilearn”是一个模块,“nilearn.datasets”是另一个。通过导入“nilearn”,您只是导入了该模块(不包括“datasets”子模块),而不是“nilearn.datasets”模块。

    如果你要做

    from nilearn import *
    

    您将获得“nilearn.datasets”模块,因为在导入语句中使用* 时,您将导入其中的每个模块,因此导入“nilearn.datasets”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 2018-03-10
      • 2013-03-05
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多