Python - 在不公开内部导入的情况下创建子包
Python - creating subpackage without exposing internal imports
我有以下结构:
/api
/v0
api_1.py
api_2.py
/v1
api_1.py
api_2.py
我想这样使用它:
import api
api.v0.api_1.notify_user('1337')
然而,当我这样做时,例如 dir(api.v0.api_1)
,我不仅会得到 API 方法,还会得到在内部执行的所有导入。我觉得其他开发人员不应该为我在内部使用的东西而烦恼。
我正在考虑的解决方案之一是将 api_1 中的所有内部导入更改为类似的内容:
import collections as _collections
清楚地表明它不是 public API 的一部分。然而,这似乎很奇怪。
我该如何解决这个难题?或者也许我根本不应该打扰,而我想要实现的目标是矫枉过正?
可能您需要在 __init__.py
中导入 public 内容。文件结构应该是这样的:
/api
/v0
__init__.py # import public stuff here
api_1.py
api_2.py
/v1
__init__.py
api_1.py
api_2.py
代码中:
api.v0.notify_user('1337')
我有以下结构:
/api
/v0
api_1.py
api_2.py
/v1
api_1.py
api_2.py
我想这样使用它:
import api
api.v0.api_1.notify_user('1337')
然而,当我这样做时,例如 dir(api.v0.api_1)
,我不仅会得到 API 方法,还会得到在内部执行的所有导入。我觉得其他开发人员不应该为我在内部使用的东西而烦恼。
我正在考虑的解决方案之一是将 api_1 中的所有内部导入更改为类似的内容:
import collections as _collections
清楚地表明它不是 public API 的一部分。然而,这似乎很奇怪。
我该如何解决这个难题?或者也许我根本不应该打扰,而我想要实现的目标是矫枉过正?
可能您需要在 __init__.py
中导入 public 内容。文件结构应该是这样的:
/api
/v0
__init__.py # import public stuff here
api_1.py
api_2.py
/v1
__init__.py
api_1.py
api_2.py
代码中:
api.v0.notify_user('1337')