python pypi 包模块可见性

标签 python package pypi

我刚刚发布了 PyPi package但是当我自己pip install编辑它之后,我发现有很多不应该的可见模块!

实际上,我只是想让两个函数可见(super_cleansimple_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/

相关文章:

python - 嵌套字符串文字插值是否可能?

python - 蒙特卡洛分析 Python 石油和天然气体积

r - 删除包后 sessionInfo() 返回错误

java - 我应该遵循 Java 包的命名约定吗?

python - PyPI 区分大小写吗?

用于合并排序文件的 Python 类,如何改进?

python - re.sub(...) 替换最左边的事件?

installation - Ocaml OPAM 是否检测先前安装的 Ocaml 软件包?

python - 如何托管我自己的私有(private) conda 存储库?

python - 如何从需要使用 PyCharm 进行身份验证的本地 PyPI 导入包?