Python 在不公开子模块的情况下,从_init__u; py.py中的子模块导入函数
我正在处理一个类似以下目录结构的Python项目:Python 在不公开子模块的情况下,从_init__u; py.py中的子模块导入函数,python,python-import,Python,Python Import,我正在处理一个类似以下目录结构的Python项目: foo/ ├── bar │ ├── bar1.py │ ├── bar2.py │ └── __init__.py └── __init__.py 其中模块bar1定义了功能function1 我想让我的代码用户直接从foo导入function1(而不是其他),即通过从foo导入function1。公平地说,这可以通过以下foo/\uuuu init\uuuu.py实现: from .bar.bar1 import functi
foo/
├── bar
│ ├── bar1.py
│ ├── bar2.py
│ └── __init__.py
└── __init__.py
其中模块bar1
定义了功能function1
我想让我的代码用户直接从foo
导入function1
(而不是其他),即通过从foo导入function1
。公平地说,这可以通过以下foo/\uuuu init\uuuu.py
实现:
from .bar.bar1 import function1
__all__ = ['function1']
from .bar.bar1 import function1
__all__ = ['function1']
del bar
现在的问题是,在例如REPL中运行import foo
的人在尝试自动完成foo.
时,仍会在foo.function1
旁边显示foo.bar
。有没有一种方法可以对用户“隐藏”存在的bar
,而不将其名称更改为\u bar
我可能是走错了路,所以我愿意接受关于如何重新构造代码的建议,但我希望避免重命名模块。您可以通过删除
foo/\uu init\uuuupy
中的bar
引用来隐藏它:
from .bar.bar1 import function1
__all__ = ['function1']
from .bar.bar1 import function1
__all__ = ['function1']
del bar