当我使用argparse时,为什么pydoc不起作用?

时间:2016-05-06 08:05:23

标签: python

对于python仍然很新,所以请原谅我,如果这看起来很明显,但是 我发现argparse阻止我在我的脚本上运行pydoc。

"""
  Script to blah blah blah
"""

import argparse

parser = argparse.ArgumentParser(description='Script to do something useful')

# If I uncomment this line, pydoc fails !
#args = parser.parse_args()

如果我取消注释最后一行,并运行 pydoc scriptname ,那么pydoc似乎尝试以某种方式运行脚本,而不仅仅是显示格式化的docstring ??

我哪里错了?

1 个答案:

答案 0 :(得分:1)

pydoc 导入文件,这意味着argparse将会这样做。解决此问题的典型方法是设置一个条件,仅当模块作为主模块导入时才会运行:

"""
  Script to blah blah blah
"""

import argparse

parser = argparse.ArgumentParser(description='Script to do something useful')

if __name__ == '__main__':
    args = parser.parse_args()

这是python社区中一个非常好用和理解的习惯用法,因此这里没有任何魔法会给你未来的读者带来困难。基本上,每个模块都有一个__name__属性(这是模块的名称)。 “master”模块(python启动它的执行的模块)获取特殊名称__main__,而不是没有扩展名的典型文件基本名称。