隐藏库中的导入(Python)

时间:2017-07-26 15:45:40

标签: python import

如何在我的库中隐藏导入?

library.py

import numpy as np

test.py

import library
print(dir(library))

结果(python3 test.py)

['__builtins__', '__cached__', '__doc__', '__file__',
 '__loader__', '__name__', '__package__', '__spec__', 
 'np']

问题:np是图书馆的一个模块。

隐藏我用于编写库的库有什么明智的方法?

2 个答案:

答案 0 :(得分:3)

如果您想将导入标记为不是公共API的一部分,请为模块指定一个带有前导下划线的名称:

.noUi-handle { display:none; }

如果要完全隐藏名称,则需要在使用NumPy的模块的每个函数内执行导入:

import numpy as _np

答案 1 :(得分:2)

您可以将代码组织为一个模块,其中__init__.py文件指定了您的库提供的内容。因此,你可能会有像

这样的东西

实际的库实现:

# ./library/mycode.py
import numpy

def f():
    pass

def g():
    pass

init文件:

# ./library/__init__.py
from library.mycode import f, g

现在我们测试一下:

# ./test.py
import library
print dir(library)

请注意,虽然这会隐藏来自您库的顶级属性的numpy导入,但是一个充分确定的用户仍然可以通过library.mycode.numpy获取它。尽管如此,这有效地向您的用户展示了您希望作为库的API公开的内容,并符合Python的“我们都是成年人”的理念。