主脚本中导入subpackge时如何提升子包的级别?

问题描述 投票:0回答:1

我想制作一个子包级别,以便在更简单的路径中编写主脚本。也就是说,我想直接将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主脚本以短路径形式写成导入子包?

python relative-path
1个回答
0
投票
pack/
|-- __init__.py
|-- sub1/
    |-- sub2/
        |-- __init__.py  
        |-- mod.py

我明白这是结构。地点

from .sub1 import sub2

在 sub2 的 init.py

这将使您能够使用

直接从外部包导入 sub2
import pack.sub2

其他方法是使用

sys
,但这可能会产生数千个其他问题

© www.soinside.com 2019 - 2024. All rights reserved.