【问题标题】:How do I expose a function in a Python module?如何在 Python 模块中公开函数?
【发布时间】:2023-03-28 22:34:02
【问题描述】:

我编写了一个由单个函数组成的模块。我希望能够像 tqdm 一样使用它:

>>> from tqdm import tqdm
>>> tqdm
<function tqdm.tqdm>

但是我不知道如何以这种方式进行设置。这是我所拥有的:

>>> from missingno import missingno
>>> missingno
<module 'missingno.missingno' from '[...]'>
>>> missingno.missingno
<function missingno.missingno.missingno>

我相信这个问题之前已经被问过无数次了,但我不确定包装是如何工作的,也找不到这个谜题的答案。

这里是存储库:https://github.com/ResidentMario/missingno

【问题讨论】:

    标签: python module pypi


    【解决方案1】:

    看了pandas-profiling之后,我明白了。将以下行添加到__init__.py()

    from .missingno import missingno

    【讨论】:

    • 另外,如果你想非常干净,在你的__init__.py文件中添加__all__ = ['missingno']
    【解决方案2】:

    我不完全确定你的问题是什么,但我认为你想要的是:

    from missingno.missingno import missingno
    

    您可能需要考虑为包/文件/函数命名不同的东西哈哈。

    【讨论】:

    • 我希望它只是 from missingno import missingno,就像 tqdm 一样。问题是他们的存储库似乎通过将模块放在存储库顶部(?)而不是模块级文件夹来实现这一点,但是 pip 和 PyPi 都拒绝这样的文件结构。
    • 您可以编写一个脚本来执行安装到一个单独的位置,并将您的 PYTHONPATH 指向该位置(即,当您安装时创建一个名为“something”的目录并将missingno.py 放在该目录中. 然后将 PYTHONPATH 指向“某物”)。
    • @ResMar no,tqdm 不会将模块放在 repo 的顶部,而是放在 tqdm 文件夹中。因此这可能会产生误导,因为模块文件夹与顶层文件夹具有相同的名称,但这实际上是一个标准的 Python 模块层次结构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2014-03-17
    • 1970-01-01
    相关资源
    最近更新 更多