在 sphinx-apidoc 生成的文件中包含 __main__.py

2023-12-06

我无法在生成 RST 文件时正确添加 __main__.py 文件及其功能sphinx-apidoc。其他文件和类均正确生成。

仅当我运行 sphinx-apidoc 时我才工作-P包含私有模块的参数。但我不想添加其他模块的私有方法,我只需要 __main__.py 中的这些方法。

__main__.py 看起来像这样:

def main():
    """
    main() description here
    """
    f1()
    f2()

if __name__ == '__main__':
    main()

我想拥有main(), f1() and f2()包含在 sphinx-apidoc 生成的 RST 文件中。

有一个类似的问题使用 sphinx 记录 python 脚本条目 (__name__ == '__main__')但它没有回答我的问题。


我认为这是一个未记录的功能,或者它也可能是错误sphinx-apidocv.3.2.1。如果我们看一下的文档-P option,它写道:

-P, --private
    Include “_private” modules.

注意这没有提到:private-members:来自 autodoc 标志选项.

两个不同的问题被混为一谈,“私有模块”和“模块内的私有对象”。影响的选项.rst根据官方文档,每个文件的生成应该不同。

sphinx-apidoc将生成.rst基于 2 个主要模板的文件,module.rst_t and package.rst_t。 (使用带有 venv 的 SphinxWindows这些可以在下面找到/venv/Lib/site-packages/sphinx/templates/apidoc).

默认行为(由模板实现)是生成 1.rst每个包的文件,并在该文件中放置 1.. automodule::每个模块的指令。什么是-P选项(据说)是添加一个指令.. automodule:: your-package.__private-module__ to the .rst每个私有模块的文件。

另一种方法是使用-e选项与sphinx-apidoc在这种情况下,一个单独的.rst为每个模块和包生成文件。所以使用sphinx-apidoc -e -P会造成额外的.rst为私有模块生成的文件。

但我不想添加其他模块的私有方法

私有类/方法/变量(模块内的对象)受到 autodoc 的影响':private-members:' option.

sphinx-apidoc设置生成的默认自动文档选项.. automodule::指令定义为SPHINX_APIDOC_OPTIONS环境变量(即:members:, :undoc-members: and show-inheritance)。这些选项不能作为命令行参数传递,您必须在运行之前设置环境变量sphinx-apidoc更改默认值。 (sphinx-apidoc不把它们从conf.py,与 autodoc 不同。)

查看源代码apidoc.py

# automodule options
if 'SPHINX_APIDOC_OPTIONS' in os.environ:
    OPTIONS = os.environ['SPHINX_APIDOC_OPTIONS'].split(',')
else:
    OPTIONS = [
        'members',
        'undoc-members',
        # 'inherited-members', # disabled because there's a bug in sphinx
        'show-inheritance',
    ]

Because :private-members:是默认的自动文档选项,应使用设置SPHINX_APIDOC_OPTIONS(如文档所述和源代码所示)。如果您包括-P选项,其唯一(记录的)效果应该是添加.. automodule::私有模块的指令,发生的情况是它还设置了 autodoc 选项:private-members:每个指令。

下面的树:

your_package
 ├  one_module.py
 ├  __init__.py
 └  __main__.py

With sphinx-apidoc -P将生成:

your_package.__main__ module
----------------------------

.. automodule:: your_package.__main__  <<-- -P option is documented as having this effect.
   :members:
   :undoc-members:
   :show-inheritance:
   :private-members:    <<-- -P option is not documented to have this effect.

那么如何实现问题中所述的目标呢?

如果你使用-e选项与sphinx-apidoc生成一个.rst每个模块的文件,您可以使用[EXCLUDE_PATTERN …]从签名。通过跑步sphinx-apidoc两次,一次为__main__.py模块(连同-P选项),并对其余模块进行第二次。

如果你不想要个人.rst文件为您的模块,而不是正常的 1.rst每个包的文件,每个模块包含一个指令。那么就不可能实现这一目标(不诉诸大量的黑客攻击)。您最好的选择就是简单地复制粘贴 1.. automodule::指令每__main__.py进入.rst文件生成后。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 sphinx-apidoc 生成的文件中包含 __main__.py 的相关文章

  • python sys.path 故障排除

    python 文档位于http docs python org library sys html http docs python org library sys html比如说sys path is 从环境变量 PYTHONPATH 以及
  • 如何在多进程系统中实现锁定?

    我们正在并行运行许多詹金斯项目 我们使用 python 并且选择使用 pyenv 管理虚拟环境 不幸的是 pyenv 有一个众所周知的竞争条件 https github com yyuu pyenv issues 174 为了解决这个问题
  • 获取 .wav 文件长度或持续时间

    我正在寻找一种方法来找出 python 中音频文件 wav 的持续时间 到目前为止我已经了解了 pythonwave图书馆 mutagen pymedia pymad我无法获取 wav 文件的持续时间 Pymad给了我持续时间 但它不一致
  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • 稀有对象的 python 类型注释,例如 psycopg2 对象

    我了解内置类型 但是我如何指定稀有对象 例如数据库连接对象 def get connection and cursor gt tuple psycopg2 extensions cursor psycopg2 extensions conn
  • 在python中将数据库表写入文件的最快方法

    我正在尝试从数据库中提取大量数据并将其写入 csv 文件 我正在尝试找出最快的方法来做到这一点 我发现在 fetchall 的结果上运行 writerows 比下面的代码慢 40 with open filename a as f writ
  • 是否可以从 Julia 调用 Python 函数并返回其结果?

    我正在使用 Python 从网络上抓取数据 我想使用这些数据在 Julia 中运行计算 是否可以在 Julia 中调用该函数并返回其结果 或者我最好直接导出到 CSV 并以这种方式加载数据 绝对地 看PyCall jl https gith
  • 如何通过 python 多处理利用所有核心

    我一直在摆弄Python的multiprocessing现在已经使用了一个多小时的功能 尝试使用并行化相当复杂的图形遍历函数multiprocessing Process and multiprocessing Manager import
  • 在 python pandas 中,如何保存“网格图”?

    我对 pandas 绘图工具很陌生 在文档中 以下命令非常方便 myplot rts ret hist bins 50 by rts primary mic 然而 当我尝试从图中获取图形参考并保存它时 问题就出现了 myfigure myp
  • 如何使用scrapy检查网站是否支持http、htts和www前缀

    我正在使用 scrapy 来检查某些网站是否工作正常 当我使用http example com https example com or http www example com 当我创建 scrapy 请求时 它工作正常 例如 在我的pa
  • Python Anaconda:如何测试更新的库是否与我现有的代码兼容?

    我在 Windows 7 机器上使用 Python 2 7 Anaconda 安装进行数据分析和科学计算 当新的库发布时 例如新版本的 pandas patsy 等 您建议我如何测试新版本与现有代码的兼容性 是否可以在同一台机器上安装两个
  • Spark 和 Python 使用自定义文件格式/生成器作为 RDD 的输入

    我想问一下 Spark 中输入的可能性 我可以看到从http spark apache org docs latest programming guide html http spark apache org docs latest pro
  • Plotly:如何检查基本图形结构(版本 4)

    对于旧版本的plotly 例如在 Jupyterlab 中 您可以简单地运行figure像这样检查你的图形的基础知识 Ouput data marker color red size 10 symbol 104 mode markers l
  • Sphinx内联代码高亮

    我使用 Sphinx 制作一个包含代码示例的网站 我成功地使用了 code block获取语 法高亮的指令 但我无法使用此代码获得内联语法突出显示 role bash code language bash Test inline bash
  • 是否需要关闭没有引用它们的文件?

    作为一个完全的编程初学者 我试图理解打开和关闭文件的基本概念 我正在做的一项练习是创建一个脚本 允许我将内容从一个文件复制到另一个文件 in file open from file indata in file read out file
  • 为什么 __dict__ 和 __weakref__ 类从未在 Python 中重新定义?

    类创建似乎从来没有re 定义 dict and weakref class属性 即 如果它们已经存在于超类的字典中 则它们不会添加到其子类的字典中 但始终re 定义 doc and module class属性 为什么 gt gt gt c
  • 无法通过 Python 子进程进行 SSH

    我需要通过堡垒 ssh 进入机器 因此 该命令相当长 ssh i
  • minizinc python 安装

    我通过 anaconda 提示符在 python 上安装了 minizinc 就像其他软件包一样 pip install minizinc 该软件包表示已成功安装 我可以导入该模块 但是 我正在遵循基本示例https minizinc py
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • 无法安装最新版本的 Numpy (1.22.3)

    我正在尝试安装最新版本的 numpy 即 1 22 3 但看起来 pip 无法找到最后一个版本 我知道我可以从源代码本地安装它 但我想了解为什么我无法使用 pip 安装它 PS 我有最新版本的pip 22 0 4 ERROR Could n

随机推荐

  • 让 PowerShell 等待 Excel 完成刷新数据透视表

    所以我开发了一个Powershell脚本来刷新大约40个大的excel文件并保存它们 在这个脚本中我运行一个excel宏来传递excel ODBC 连接参数 然后在刷新完成后从excel文件中删除它们 我唯一的问题是 对于这 40 个文件中
  • qmake 和多个 MSVS 版本

    From Visual Studio 2008 Command Prompt我运行这个命令来生成 vcproj file gt qmake spec win32 msvc2008 并收到警告消息 WARNING Generator MSVC
  • LINQ连接多表

    我有4张桌子 table1 id1 fk tbl2 this is the foreign key to the id in table2 table2 id2 fk tbl3 this is the foreign key to the
  • 如何让gganimate中的点出现而不是过渡

    我正在使用 gganimate 假设我有这个 MWE library ggplot2 library gganimate ggplot airquality aes Day Temp geom point color red size 1
  • 有没有办法以编程方式检测用户何时在浏览器中按下 F5 按钮?

    我有一个缓存 每当用户在浏览器中发出 F5 请求时 我都希望该缓存失效 我正在运行 JSF 2 0 应用程序 有没有办法做到这一点 Use the FacesContext getCurrentInstance isPostBack 检查页
  • 解析 YAML 文件

    这是我第一次使用 YAML 文件 所以我首先想到的是找到任何可以帮助我解析文件的库 我找到了两个库 YamlBean 和 SnakeYAML 我不确定我要使用哪一个 这是我尝试解析的文件的示例 users user1 groups Prem
  • AppEngine Memcache 过期策略

    我期待以下 AppEngine 代码 MemcacheService memcache MemcacheServiceFactory getMemcacheService memcache put Foo Bar Expiration on
  • PHP中删除一行记录

    我试图删除数据库中的一条记录 所以基本上我创建了一个包含我所有记录的表 现在我需要做的是 当我单击 删除 链接时 它将删除记录选定的行 它看起来是这样的 所以基本上我这里有 3 页 1 页面 php2 添加 php3 删除 php 这是我的
  • Waitpid 相当于超时吗?

    想象一下我有一个启动多个子进程的进程 父母需要知道孩子何时退出 我可以用waitpid 但是如果 当父级需要退出时 我无法告诉被阻塞的线程waitpid优雅地退出并加入它 让事情自行清理固然很好 但这可能没什么大不了的 我可以用waitpi
  • Visual Studio Code 无法从 Powershell 打开

    我正在尝试使用 Powershell 打开 Visual Studio Codecode在文件夹内时执行命令 当我尝试这样做时 我总是收到此错误 块引用代码 术语 代码 不被识别为 cmdlet 函数 脚本文件或可操作程序的名称 检查名称的
  • ASP.net MVC - 模型绑定排除类字段?

    在最近的一个项目中 我遇到了意想不到的障碍 具有简单公共字段 注意不是属性 的类似乎不想与 ASP net MVC 3 0 模型绑定器 这是设计使然吗 除了将字段更改为属性之外 这里还有其他选项吗 update 使用简单字段 而不是属性 的
  • JavaScript - SetInterval 无法正常工作

    我得到了这段脚本 在本地运行 但似乎 setInterval 不起作用 发送表单功能不起作用 任何帮助将不胜感激 Thanks 你需要打电话setInterval 函数中不带括号 如下所示 setI
  • 如何禁用音频播放器 HTML5 中的特定控件

    我只想显示音频控件 但禁止用户拖动按钮 因为我不希望用户跳过歌曲 如何使这项工作有效 你不能 您要么显示浏览器的内置控件 要么不显示 所以你应该隐藏它们并制作你自己的 如果你不想要搜索功能 这应该很容易 或者看看像 jPlayer http
  • 如何检查来自 json 的值是否为 null?

    我想检查 json 的结果是否为空 我使用了这段代码 NSString likesCount if facebook valueForKey likes NSNull null return else return facebook val
  • 为什么我的网站不显示我的网站图标?

    我有一个刚刚上传到互联网的网站 当我在 Ubuntu 上使用 Firefox 3 0 1 浏览该网站时 我看不到图标 WinXP 上的 Firefox 3 0 1 确实会显示它 WhyUbuntu下不显示favicon吗 它是根目录中的 f
  • iOS 13:使用新的 NEHotspotConfiguration.init(ssidPrefix: String) 似乎不起作用

    我目前正在运行 Xcode 11 0 和 iOS 13 1 测试版 我正在尝试 iOS 13 中新添加的功能 能够连接到仅已知前缀的 Wifi 热点 苹果文档 这非常适合无头配件的 Wifi 设置 因为您无需要求用户切换到操作系统设置即可连
  • Pandas:通过时间间隔的另一个数据帧过滤数据帧

    如果我有一个数据框 df data 例如 ID Time X Y Z H 05 2020 06 26 14 13 16 0 055 0 047 0 039 0 062 05 2020 06 26 14 13 21 0 063 0 063 0
  • Pivot_Longer 创建多个组合列

    我在其他地方看到了对我的问题的一些可能的讨论 但它要么没有解决 要么我无法完全理解答案是否适用 所以我正在创建一个新问题 以下问题特别涉及这个主题 但尚未解决 使用pivot longer将宽列收集成多个长列 获取以下示例数据 正如您所看到
  • 在 Drupal 中,如何更改传递给 Pathauto 的值?

    我已将 Pathauto 配置为根据节点标题为特定内容类型生成别名 问题是我想在 Pathauto 使用它生成别名之前对此标题进行一些小的更改 第一条评论在这个帖子建议使用 hook token values 但我无法真正理解如何使用它 即
  • 在 sphinx-apidoc 生成的文件中包含 __main__.py

    我无法在生成 RST 文件时正确添加 main py 文件及其功能sphinx apidoc 其他文件和类均正确生成 仅当我运行 sphinx apidoc 时我才工作 P包含私有模块的参数 但我不想添加其他模块的私有方法 我只需要 mai