使用pyCharm时python3 docopt引发使用错误

时间:2018-11-10 13:56:19

标签: pycharm python-3.7 docopt

我需要使用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

我尝试过的事情:

  • 删除了naval_fate.py的文件扩展名。
  • 已卸载并重新安装的docopt。
  • 在用法和选项中和之后更改了单词的位置 部分。
  • 在选项和文本之间使用了两个空格(在另一个 线程)
  • 试图以不同的方式在文档字符串之外进行格式化。

例如

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

代替

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

但这一切都没有帮助。有人有主意吗? 到目前为止,谢谢。

1 个答案:

答案 0 :(得分:0)

好吧,我找到了!是“用法”部分行尾的花括号。

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

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