如何阻止 pydoc 在 f 字符串上出错?

How to stop pydoc from erroring out on f-strings?

我正在使用 pydoc 自动构建文档。我的代码是为 Python 3.6.

编写的

它因以下错误而出错:<type 'exceptions.SyntaxError'>: invalid syntax。每当我使用 f-string.

时就会发生这种情况

你能帮我看看为什么吗?

当我 运行 which pydoc 我得到: /usr/local/bin/pydoc

示例代码

下面是一些示例代码,名为 test.py

"""This is a docstring."""


def my_method():
    """Another docstring."""
    print(
        f"This is a really really really really really really really really "
        f"really really really really really long string."
    )
    pass

结果

当我在运行 pydoc test 上输出时:problem in ./test.py - <type 'exceptions.SyntaxError'>: invalid syntax (test.py, line 7)。注意:这一行是 f-string.

当(从 ipython 内)我说:help('test'),这是输出:

Help on module test:

NAME
    test - This is a docstring.

FUNCTIONS
    my_method()
        Another docstring.

FILE
    /Users/james.braza/code/wpi-aladdin-syringe-pump/test.py

所以自动文档适用于 Python 的 help() 但不适用于 pydoc.

pydoc 可执行文件是一个脚本,可能会调用不同版本的 Python。 (运行 which pydoc 并检查脚本可能会帮助您确认这一点。)为确保您是 运行 pydoc with Python3.6+,请尝试

/path/to/python3.6 -m pydoc test

好吧,事实证明我的问题很微不足道。 @unutbu在评论里指出了,后来又回复了。我需要通过 Python 3.6 或更高版本 运行 pydoc 脚本。

对我来说:python3 -V returns Python 3.7.3.

所以 运行ning:python3 -m pydoc test 工作得很好!!

Help on module test:

NAME
    test - This is a docstring.

FUNCTIONS
    my_method()
        Another docstring.

FILE
    /Users/james.braza/code/wpi-aladdin-syringe-pump/test.py