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

2024-05-04 18:18:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道不建议使用相对进口,例如引自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中,绝对导入非常有效:

^{pr2}$

但是,对于像package2中的somescript.py这样的模块,以下绝对导入:

import package2.somemodule
import package1

这会引起强烈的恐慌:

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

Tags: 模块inpyimportpackageforismore
1条回答
网友
1楼 · 发布于 2024-05-04 18:18:42

你的“主”文件在哪里。在

如果您有:

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

在somescript.py公司名称:

^{pr2}$

在主.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主.py你没问题。在

相关问题 更多 >