Python - 创建子包而不暴露内部导入

时间:2015-02-19 14:56:04

标签: python python-import python-module

我有以下结构:

/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

清楚地表明它不是公共API的一部分。然而,这似乎很奇怪。

我该如何解决这个难题?或者也许我根本不应该打扰,我想要实现的是一种矫枉过正?

1 个答案:

答案 0 :(得分:4)

可能您需要导入__init__.py中的公共内容。文件结构应如此:

/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')