在导入父包后调用模块

Calling a module after importing its parent package

我一直在想办法弄清楚如何在导入父包后调用模块。

目录结构如下:

.
├── main
│   └── pkg
│       └── file.py
└── another_main

注意: 所有包都包含 __init__.py 文件,并且设置了所有必要的路径变量。我没有在这里展示它,因为这只是一个虚拟结构。

如果我这样做:

from main import pkg
pkg.file

这不起作用并抛出 AttributeError: module 'pkg' has no attribute 'file'

但如果我先做:

from main.pkg import file

之后我可以做:

from main import pkg
pkg.file  # --> Now this doesn't throw AttributeError

有没有一种方法可以像 pkg.file 一样调用 file 而无需执行 from main.pkg import file

P.S.: 我想在我的脚本中使用 pkg.file 以便将来我可以回忆起我从pkg 而不是 some_other_pkg.

main/pkg__init__.py 中,您必须导入 file:

# pkg/__init__.py

import pkg.file

# EDIT: if the import above does not work, use this instead

from . import file