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
我尝试了什么:
- 删除了 naval_fate.py.
的文件扩展名
- 卸载并重新安装 docopt。
- 更改了用法和选项中及之后的单词位置
部分。
- 在选项和文本之间使用了两个空格(在另一个
线程)
- 尝试以不同的方式在文档字符串之外进行格式化。
例如
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}
将其更改为 ] 后一切正常。
希望我能帮助其他人解决这个小(大)错误。
我需要一些有关 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')
但这一切都无济于事。有人有想法吗? 到目前为止谢谢。
嗯,我找到了!这是 'Usage' 部分行尾的花括号。
naval_fate.py mine (set|remove) <x> <y> [--moored|--drifting}
将其更改为 ] 后一切正常。
希望我能帮助其他人解决这个小(大)错误。