gpt4 book ai didi

python - 何时使用绝对导入

转载 作者:IT老高 更新时间:2023-10-28 21:12:06 25 4
gpt4 key购买 nike

我正在更改一堆旧的 python 代码,这些代码偶尔会遇到包之间的名称冲突。我有一个关于何时应该使用绝对导入以及仅按名称导入同级模块是否合适的问题。

/package/
/package/__init__.py
/package/subA
/package/subA/__init__.py
/package/subA/moduleA.py
/package/subA/moduleB.py
/package/subB
/package/subB/__init__.py
/package/subB/moduleA.py
/package/subB/moduleB.py

包中的每个 import 语句是否应该如下所示:

import package.subX.moduleX

from package.subX import moduleX

子包 __init__.py 文件中的内容。简单的说会不会错

import moduleA
import moduleB

或者,在/package/subA/moduleA.py中,简单的说一下会不会错:

import moduleB

最佳答案

相对导入被证明是一个非常糟糕的主意,尽管它们长期以来一直是默认行为。您可以在此站点上找到很多问题,其中有人只是在内置模块之后命名他们的文件,然后用奇怪的错误消息破坏他们的应用程序。

这就是为什么通过引用您的项目无处不在(包括包)来进行绝对导入总是好的原因。

简而言之,使用这种风格:

import myproject.mypackage
from myproject.mypackage.myfile import MyClass

引自 PEP8 :

Relative imports for intra-package imports are highly discouraged. Always use the absolute package path for all imports. Even now that PEP 328 is fully implemented in Python 2.5, its style of explicit relative imports is actively discouraged; absolute imports are more portable and usually more readable.

关于python - 何时使用绝对导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5811463/

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