gpt4 book ai didi

python - 在 Python 中正确导入模块

转载 作者:太空狗 更新时间:2023-10-29 17:52:47 25 4
gpt4 key购买 nike

如何设置模块导入以便每个模块都可以访问所有其他模块的对象?

我有一个中等大小的 Python 应用程序,其模块文件位于各个子目录中。我创建了将这些子目录附加到 sys.path 的模块,并使用 import thisModule as tm 导入了一组模块。模块对象使用该限定来引用。然后,我使用 from moduleImports import * 将该模块导入到其他模块中。现在的代码很草率,其中有几个这样的东西,通常是重复的。

首先,应用程序失败是因为未分配某些模块引用。相同的代码在单元测试时会运行。

其次,我担心我会导致递归模块导入出现问题。导入 moduleImports 会导入 thisModule,后者会导入 moduleImports。 . . .

正确的做法是什么?

最佳答案

“我有一个中等大小的 Python 应用程序,其模块文件位于各个子目录中。”

很好。绝对确保每个目录都包含一个 __init__.py 文件,这样它就是一个包。

“我创建了将这些子目录附加到 sys.path 的模块”

不好。使用 PYTHONPATH 或安装整个结构 Lib/site-packages。不要动态更新 sys.path。这是一件坏事。难以管理和维护。

“导入一组模块,使用import thisModule as tm。”

没有意义。也许您为结构中的每个模块设置了一个 import thisModule as tm。这是典型的标准做法:只导入您需要的模块,不导入其他模块。

“然后我使用 from moduleImports import * 将该模块导入到其他模块中”

不好。不要一揽子导入一堆随机的东西。

每个模块都应该有一个较长的列表,列出它需要的具体内容。

import this
import that
import package.module

明确的 list 。没有魔法。 sys.path 没有动态变化。

我当前的项目有 100 个模块,十几个包。每个模块只导入它需要的东西。没有魔法。

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

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