使用 Sphinx 记录包 __init__ 导入

问题描述 投票:0回答:2

我有一个Python包,感觉它有一个方法:

from felling.src.email import send_email

根据 Pandas 如何处理

pandas.DataFrame
中的
felling.__init__.py
等导入,我有:

# felling.__init__.py
from felling.src.email import send_email

这允许某人通过使用以下方式导入

felling.src.email.send_email

from felling import send_email 

最后一个导入方法是我打算导入

send_email
的主要方式。尽管这是有效的,但没有人跑过
from pandas.core.api import DataFrame

使用 Sphinx 记录

felling
时,它会将
send_email
记录为
felling.src.email.send_email
,而不是
felling.email
。我读过 Pandas 文档,但无法弄清楚他们如何让 Sphinx 将
pandas.core.api.DataFrame
记录为
pandas.DataFrame

我该怎么做?

示例
.py

# felling.src.email

def send_email(to:str, subject:str):
    """
    Send an email

    Parameters
    ----------
    to : str
        Who should receive the email
    subject : str
        What should the emails subject be
    """
    print(to)
    print(subject)

示例
.rst

felling methods
===============

A package for logging

felling.src.email
------------------------

.. automodule:: felling.src.email
   :members:
   :undoc-members:
   :show-inheritance:

伐木之树

├── README.md
├── __init__.py
├── __main__.py
├── resources
│   └── logger.json
├── src
│   ├── __init__.py
│   ├── compare_logs.py
│   ├── configure_felling.py
│   └── email.py
└── version.py
python pandas python-sphinx autodoc
2个回答
3
投票

拥有

__init__.py
文件使得类和函数的 限定名称 可能不直接对应于模块作为文件的组织方式。 这个答案中给出了一个很好的例子。

autodoc 指令会像在 Python 中通常那样导入对象。指令的第一个参数应该是它导入的对象的完全限定名称,因此

__init__.py
更改以允许导入的任何名称也应该可以用作指令的参数。

指令 - autodoc

autodoc 提供了几个指令,它们是常用 py:module、py:class 等的版本。在解析时,它们导入相应的模块并提取给定对象的文档字符串,将它们插入到合适的 py:module、py:class 等指令下的页面源中。

这意味着,在这个问题中,您可以使用:

.. autofunction:: felling.send_email 

.. automodule:: felling

0
投票

你能帮我一下吗?这里我也有类似的情况,但问题是我按照你的指示做了,automodule和我的模块的名称。但也有完全相同的错误。你会帮忙吗?

© www.soinside.com 2019 - 2024. All rights reserved.