gpt4 book ai didi

Python 最佳实践在子模块中导入子模块

转载 作者:行者123 更新时间:2023-12-05 06:29:15 24 4
gpt4 key购买 nike

我目前正在阅读有关子模块导入中的 Python 子模块的信息,但不知何故我找不到合适的答案。这是一个例子:

root/
main.py
moduleA/
__init__.py
log.py
moduleB/
__init__.py
worker.py

我想使用 import moduleA.logworker 中导入 log。我想在 main 中导入 worker 并在那里使用它。

到目前为止,我找到了以下解决方案:

  • sys.path 附加到 ../ (sys.path.append('../'))
  • 我阅读了一些有关使用 pip -e 将我的模块安装到环境中的内容。
  • 避免从子模块导入的脚本。

我读到过 sys.path hack 被认为是最佳实践。但不知何故感觉不对。

所以我想知道您认为什么是最佳实践。

最佳答案

您可以使用相对导入来解决这个问题:

main.py中写入

from .moduleB import worker

worker.py中:

from ..moduleA import log

一个点将当前目录作为路径的开始,因此.moduleB 深入到当前目录下的文件夹moduleB
两个点向上移动一个目录,因此 ..moduleA 进入 root 目录,然后向下移动到 moduleA。每增加一个点就是向上一个目录。
F.i. 来自 . import ab 将从同一目录导入 ab.py
打包/安装模块不是进行相对导入所必需的。但是您必须使用 from ..moduleA import log 进行导入。使用 import ..moduleA.log 导入不适用于相对导入。

关于Python 最佳实践在子模块中导入子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53727076/

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