gpt4 book ai didi

python - 在开发 Python 模块时使用绝对导入?

转载 作者:行者123 更新时间:2023-11-28 17:40:08 24 4
gpt4 key购买 nike

我知道不建议使用相对导入,例如引用自 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.

如果我正在开发一个包(包含多个模块)怎么办?在开发过程中,如果没有安装/部署包,绝对导入将不起作用。这是否意味着我必须定期安装/部署当前的 WIP 模块只是为了测试?

这是 Cld 提供的示例.给定一个 Python 项目/包:

myproject/
package1/
__init__.py
somemodule.py
package2/
__init__.py
somemodule.py
somescript.py
main.py

main.py 中,绝对导入效果很好:

import package1
import package2.somescript
import package2.somemodule

但是,对于模块,例如 package2 中的 somescript.py,以下绝对导入:

import package2.somemodule
import package1

它会引发 ImportError:

Traceback (most recent call last):
File "package2/somescript.py", line 1, in <module>
import package2.somemodule
ImportError: No module named package2.somemodule

最佳答案

取决于您的“主”文件所在的位置。

如果你有:

myproject/
package1/
__init__.py
somemodule.py
package2/
__init__.py
somemodule.py
somescript.py
main.py

一些脚本.py:

import package2.somemodule
import package1

主要.py

import package1
import package2.somescript
import package2.somemodule

如果你执行:python package2/somescript.py 你会得到一个错误

Traceback (most recent call last):
File "package2/somescript.py", line 1, in <module>
import package2.somemodule
ImportError: No module named package2.somemodule

但是如果你执行 python main.py,你就没有问题了。

关于python - 在开发 Python 模块时使用绝对导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25583756/

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