python pypi 包模块可见性
python pypi package module visibility
我刚刚发布了一个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='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 中没有办法 "hide" 给定的 variable/function/class/module。一切都可以导入给用户,甚至是标准库中的东西。
在实践中,Python 中惯用的做法是在不属于 public API 的内容前加上下划线,例如:
from gutenberg_cleaner import _internal_helper_method
这向了解此习语的用户表明 "this is not meant to be imported"。
这实际上并没有阻止用户导入这个内部函数,但对于大多数项目来说,这就足够了(我认为这是你应该在这里做的)。
也就是说,还有另一种选择:有一个 third-party 库 publication
可以完全满足您的需求:您定义一个可以导入的函数列表,并且该库可以防止从进口休息。它没有被广泛使用,但它确实解决了你的问题。
我刚刚发布了一个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='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 中没有办法 "hide" 给定的 variable/function/class/module。一切都可以导入给用户,甚至是标准库中的东西。
在实践中,Python 中惯用的做法是在不属于 public API 的内容前加上下划线,例如:
from gutenberg_cleaner import _internal_helper_method
这向了解此习语的用户表明 "this is not meant to be imported"。
这实际上并没有阻止用户导入这个内部函数,但对于大多数项目来说,这就足够了(我认为这是你应该在这里做的)。
也就是说,还有另一种选择:有一个 third-party 库 publication
可以完全满足您的需求:您定义一个可以导入的函数列表,并且该库可以防止从进口休息。它没有被广泛使用,但它确实解决了你的问题。