如何在包中导入同级文件?
How to import sibling file within a package?
NameChanger
-main.py
-__init__.py
ui
-__init__.py
-utils.py
utils
-__init__.py
-file.py
我想在 NameChanger/ui/utils.py
中导入 NameChanger/utils/file.py
。
所以我尝试了 from NameChanger.utils import file
但出现了这个错误 ModuleNotFoundError: No module named 'NameChanger'
。
我也尝试了 from ...NameChanger.utils import file
,但出现了这个错误 ValueError: attempted relative import beyond top-level package
。
我该如何解决这个问题?
在ui/utils.py
中,使用相对导入。
from . import utils.file
NameChanger
本身可能不在您的搜索路径中(也不需要)。但是由于 NameChanger
是一个包,因此 NameChanger
的 子包 中包含的模块中的相对导入应该有效。
我最初建议
from .utils import file
仅当 utils
确实具有 file
作为模块级属性时才有效,而包通常不是这种情况。
NameChanger
-main.py
-__init__.py
ui
-__init__.py
-utils.py
utils
-__init__.py
-file.py
我想在 NameChanger/ui/utils.py
中导入 NameChanger/utils/file.py
。
所以我尝试了 from NameChanger.utils import file
但出现了这个错误 ModuleNotFoundError: No module named 'NameChanger'
。
我也尝试了 from ...NameChanger.utils import file
,但出现了这个错误 ValueError: attempted relative import beyond top-level package
。
我该如何解决这个问题?
在ui/utils.py
中,使用相对导入。
from . import utils.file
NameChanger
本身可能不在您的搜索路径中(也不需要)。但是由于 NameChanger
是一个包,因此 NameChanger
的 子包 中包含的模块中的相对导入应该有效。
我最初建议
from .utils import file
仅当 utils
确实具有 file
作为模块级属性时才有效,而包通常不是这种情况。