我想制作一个子包级别,以便在更简单的路径中编写主脚本。也就是说,我想直接将sub2的路径写在pack.sub2中,而不是pack.sub1.sub2中。 现在我做了一个目录结构和一些模块如下。
包/sub1/sub2/mod.py
pack/init.py
from .sub1 import sub2
在 Ipython 中,
import pack
dir(pack)
import pack.sub1
import pack.sub2
错误信息:
"No module name 'pack.sub2'
dir(pack) 显示“sub1”、“sub2”,但 import pack.sub2 失败,而 import pack.sub1 正常工作。在其他上下文中,例如库内子包之间的关系,它可能会起作用。但在这种情况下,它不起作用。 python在这方面的工作原理是什么?又如何让python主脚本以短路径形式写成导入子包?
pack/
|-- __init__.py
|-- sub1/
|-- sub2/
|-- __init__.py
|-- mod.py
我明白这是结构。地点
from .sub1 import sub2
在 sub2 的 init.py
中这将使您能够使用
直接从外部包导入 sub2import pack.sub2
其他方法是使用
sys
,但这可能会产生数千个其他问题