gpt4 book ai didi

python - 在Python中导入深度嵌套的模块

转载 作者:行者123 更新时间:2023-12-01 00:35:50 27 4
gpt4 key购买 nike

考虑 Python 3.6 中的以下情况:

basepackage
|---__init__.py
|---package
|---__init__.py
|---subpackage
|---__init__.py
|---module.py

重要细节:在basepackage.package.__init__.py中有:

from basepackage.package.subpackage.module import AClass as AliasedClass

现在,我们要在 basepackage.package.subpackage.module.py 中使用:

导入basepackage.package.subpackage.module作为aliased_module [1]

结果是:

AttributeError: module 'basepackage' has no attribute 'package'

堆栈跟踪列出了以下罪魁祸首语句(按以下顺序):

from basepackage.package.subpackage.module import AClass as AliasedClass
import basepackage.package.subpackage.module as aliased_module

但如果不是[1],而是想使用:

从basepackage.package.subpackage导入模块作为aliased_module [2]

然后一切正常。

[1][2] 有何不同,前者会导致错误,而后者不会?

最佳答案

要使第一个选项(import basepackage.package.subpackage.module as aliased_module)起作用,必须满足以下条件:

  • basepackage/__init__.py 必须包含类似于 from 的行。 import package (名称 package 必须在此 basepackage/__init__.py 文件中定义)
  • basepackage/package/__init__.py 必须包含类似于 from 的行。导入子包
  • basepackage/package/subpackage/__init__.py 必须包含类似于 from 的行。导入模块

注意:__init__.py 文件中的 import 语句也可以是绝对路径,而不是相对路径。

<小时/>

对于第二个选项(from basepackage.package.subpackage import module as aliased_module),如果每个级别都有空的 __init__.py 文件就足够了,如下所示只要这些 __init__.py 文件存在。

关于python - 在Python中导入深度嵌套的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57772706/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com