我刚刚发布了 PyPi package但是当我自己pip install
编辑它之后,我发现有很多不应该的可见模块!
实际上,我只是想让两个函数可见(super_clean
和 simple_clean
),并且它们都在 gutenberg_cleaner.py
中。
我不知道如何让其他模块和功能对用户隐藏。
如有任何帮助,我们将不胜感激。
这是我的setup.py
(如果有用的话):
from setuptools import setup
with open('README.md') as f:
long_description = f.read()
setup(
name="gutenberg_cleaner",
install_requires=['nltk'],
version='0.1.0',
description="cleans gutenberg dataset books",
author_email='<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a8c5c7c0dbcdc6c1c3c1c9dbc9dac1e8cbcd86dbc0c9dac1ce86cdccdd" rel="noreferrer noopener nofollow">[email protected]</a>',
py_modules=["gutenberg_cleaner"],
url="https://github.com/kiasar/gutenberg_cleaner",
license='MIT',
long_description=long_description,
classifiers=[
"Programming Language :: Python",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Operating System :: OS Independent",
],
)
最佳答案
一般来说,Python 中没有办法“隐藏”给定的变量/函数/类/模块。一切都可以导入给用户,甚至是标准库中的东西。
实际上,Python 中惯用的做法是在不属于公共(public) API 的内容前面加上下划线,例如:
from gutenberg_cleaner import _internal_helper_method
这向了解此习惯用法的用户表明“这不是要导入的”。
这实际上并不会阻止用户导入这个内部函数,但对于大多数项目来说,这已经足够了(我认为这就是你应该在这里做的)。
也就是说,还有另一个选择:有一个第三方库 publication
这正是您想要的:您定义可以导入的函数列表,并且库阻止导入其余函数。它没有被广泛使用,但它确实解决了您的问题。
关于python pypi 包模块可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56307313/