python pypi软件包模块可见性

时间:2019-05-25 17:48:28

标签: python package pypi

我刚刚发布了PyPi package,但是我自己B发表之后,我发现有很多不应该的可见模块!

实际上,我只希望两个功能(pip-installedsuper_clean)可见,并且它们都在simple_clean中。

我不知道如何使用户看不到其他模块和功能。

任何帮助将不胜感激。

如果有用,这是我的gutenberg_cleaner.py

setup.py

1 个答案:

答案 0 :(得分:1)

通常,没有办法在Python中“隐藏”给定的变量/函数/类/模块。一切都可以导入到用户,甚至包括标准库中的内容。

在实践中,在Python中惯用的是在不属于公共API的内容前面加上下划线,例如:

from gutenberg_cleaner import _internal_helper_method

这向知道此惯用语的用户表明“这不是要导入的”。

这实际上并没有阻止用户导入此内部功能,但是对于大多数项目而言,这已经足够了(我认为这是您应该在此处执行的操作)。

也就是说,还有另一种选择:有一个第三方库publication可以精确地执行您想要的操作:您定义了可以导入的函数列表,而该库阻止了其余函数的导入。它并未广泛使用,但确实可以解决您的问题。