python pypi包模块可见性

python pypi包模块可见性,python,package,pypi,Python,Package,Pypi,我刚刚发布了一篇文章,但是在我自己安装了它之后,我发现有很多不应该安装的可见模块 实际上,我只想看到两个函数(super\u clean和simple\u clean),它们都在gutenberg\u cleaner.py中 我不知道如何使其他模块和功能对用户隐藏 任何帮助都将不胜感激 这是我的setup.py,如果有用: from setuptools import setup with open('README.md') as f: long_description = f.rea

我刚刚发布了一篇文章,但是在我自己安装了它之后,我发现有很多不应该安装的可见模块

实际上,我只想看到两个函数(
super\u clean
simple\u clean
),它们都在
gutenberg\u 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='mohsenikiasari@ce.sharif.edu',
    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习惯于在不属于公共API的内容前加下划线,例如:

来自gutenberg\u cleaner import\u internal\u helper\u方法
这向了解此习惯用法的用户表示“这不是要导入的”

这实际上并不能阻止用户导入这个内部函数,但对于大多数项目来说,这已经足够了(我认为这是您应该在这里做的)

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