python3 docopt 在使用 pyCharm 时抛出使用错误

python3 docopt throws usage error while using pyCharm

我需要一些有关 python3.7 docopt 的基本帮助。我正在 pyCharm 中使用。 我试图让 运行 显示在 docopt.org 网站上的示例代码。但是系统抛出使用错误。 我通过 pip install docopt 安装了 doctop,版本为 0.6.2 。 我发现了一个包含相同错误消息的线程,但是用户没有文档字符串,所以这就是它对他不起作用的原因。

代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-

"""Naval fate.

Usage:
  naval_fate.py  ship new <name>...
  naval_fate.py  ship <name> move <x> <y> [ --speed=<kn>]
  naval_fate.py  ship shoot <x> <y>
  naval_fate.py  mine (set|remove) <x> <y> [--moored|--drifting}
  naval_fate.py  -h| --help
  naval_fate.py  --version

Options:
  -h --help     Show this screen.
  --version     Show version.  
  --speed=<kn>  Speed in knots [default: 10].
  -- moored     Moored (anchored) mine.
  -- drifting   Drifting mine.

"""
from docopt import docopt

if __name__ == '__main__':
    arguments = docopt(__doc__, version='1')
    print(arguments)

这是错误:

...\Scripts\python.exe 
.../naval_fate.py
Traceback (most recent call last):
  File 
".../naval_fate.py", line 27, in <module>
    arguments = docopt(__doc__, version='1')
  File "...\lib\site-packages\docopt.py", line 558, in docopt
    DocoptExit.usage = printable_usage(doc)
  File "...\lib\site-packages\docopt.py", line 466, in printable_usage
    usage_split = re.split(r'([Uu][Ss][Aa][Gg][Ee]:)', doc)
  File "C:\Python\Python37\Lib\re.py", line 213, in split
    return _compile(pattern, flags).split(string, maxsplit)
TypeError: expected string or bytes-like object

Process finished with exit code 1

我尝试了什么:

例如

from docopt
...
arguments = docopt.docopt(__doc__, version='1')

而不是

from docopt import docopt
...
arguments = docopt(__doc__, version='1')

但这一切都无济于事。有人有想法吗? 到目前为止谢谢。

嗯,我找到了!这是 'Usage' 部分行尾的花括号。

naval_fate.py  mine (set|remove) <x> <y> [--moored|--drifting}

将其更改为 ] 后一切正常。
希望我能帮助其他人解决这个小(大)错误。