【问题标题】:Stop pydoc from running my Python program停止 pydoc 运行我的 Python 程序
【发布时间】:2016-01-16 09:14:32
【问题描述】:

在“Windows 7 - pydoc from cmd”之后,我遇到了以下问题。我准备了一个简单的文档字符串记录的 hello.py "hello world" 脚本:

""" This module prints Hello, world
    More documentation.
"""
print("Hello, world")

并将其保存在 C:\Python34\lib 中。

然后使用 Window 的命令行,我将目录更改为 C:\Python34\lib,然后运行

pydoc <full path to hello.py>

我的输出是:

Hello, world
Help on module hello:

NAME
    hello

DESCRIPTION
    This module prints Hello, world
    More documentation.

FILE
    c:\python34\lib\hello.py

打印文档很棒,但首先它运行了程序。

如何让它不运行程序,只打印文档?

【问题讨论】:

  • IIRC,这不是它的工作原理...pydoc(以及许多其他自动文档工具,例如sphinx)导入源并查找python添加的__doc__属性到类/函数等。我知道导入源的唯一工具是epydoc。也就是说,通常您可以在 if __name__ == '__main__': 块中保护您不想执行的任何语句。

标签: python windows cmd pydoc


【解决方案1】:

pydoc 导入要记录的模块。所以那里的语句被执行了。

如果可以修改代码,请用if __name__ == "__main__" 保护print 行,以便该行仅在直接执行时执行,而不是在导入时执行:

""" This module prints Hello, world
    More documentation.
"""
if __name__ == "__main__":
    print("Hello, world")

【讨论】:

  • __name__ 不会改变我是否导入模块或使用 pydoc 运行它。我找不到任何关于 pydoc 运行时发生的变化的信息。
  • @nurettin,假设文件是​​abcd.py。然后,模块的__name__abcd,如果您导入它或使用pydoc 运行它。__name____main__,如果您直接使用python 运行(不导入)它。 docs.python.org/library/__main__.html
  • 没错,不管是导入还是用pydoc运行都没有区别。
猜你喜欢
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-28
  • 2022-12-09
相关资源
最近更新 更多