Мне нужна базовая помощь по docopt с python3.7. Я использую в pyCharm. Я попытался запустить пример кода, который показан на веб-сайте docopt.org. Но система выдает ошибки использования. Я установил doctop через pip install docopt версии 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
Что я пробовал:
- удалил расширения файлов Navy_fate.py.
- удалил и переустановил docopt.
- изменены позиции слов в разделах использования и параметров и после них.
- использовал два пробела между параметрами и текстом (как найдено в другой теме)
- пытался форматировать вне строки документации разными способами.
e.g
from docopt
...
arguments = docopt.docopt(__doc__, version='1')
вместо
from docopt import docopt
...
arguments = docopt(__doc__, version='1')
Но все это не помогло. У кого-нибудь есть идея? Спасибо.