gpt4 book ai didi

python - 如何在包内引用 Python 中的顶级模块?

转载 作者:IT老高 更新时间:2023-10-28 20:54:35 26 4
gpt4 key购买 nike

在下面的层次结构中,是否有一种方便且通用的方法来使用下面所有 .py 文件中的通用术语来引用 top_package?我希望有一种一致的方式来导入其他模块,这样即使“top_package”更改名称也不会中断。

我不赞成使用像“..level_one_a”这样的相对导入,因为相对路径将与下面的每个 python 文件不同。我正在寻找一种方法:

  1. 对于包中的同一个模块,每个 python 文件可以有相同的导入语句。
  2. 在包内的任何 .py 文件中对“top_package”的解耦引用,因此无论“top_package”名称更改为什么,都不会中断。

    top_package/
    __init__.py
    level_one_a/
    __init__.py
    my_lib.py
    level_two/
    __init__.py
    hello_world.py
    level_one_b/
    __init__.py
    my_lib.py
    main.py

最佳答案

这应该可以完成工作:

top_package = __import__(__name__.split('.')[0])

这里的诀窍是,对于每个模块,__name__ 变量都包含模块的完整路径,由点分隔,例如 top_package.level_one_a.my_lib。因此,如果你想获取顶级包名,你只需要获取路径的第一个组件并使用 __import__ 导入它。

尽管用于访问包的变量名称仍称为 top_package,但您可以重命名包,如果仍然可以使用。

关于python - 如何在包内引用 Python 中的顶级模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8706309/

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