【问题标题】:Python - creating subpackage without exposing internal importsPython - 创建子包而不暴露内部导入
【发布时间】:2015-02-19 14:56:04
【问题描述】:

我有以下结构:

/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 的一部分。但是,这似乎很奇怪。

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

【问题讨论】:

标签: python python-import python-module


【解决方案1】:

您可能需要在__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')

【讨论】:

  • 这就是我最终使用的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
相关资源
最近更新 更多