Отладка Python-приложения, предназначенного для запуска из терминала - PullRequest
1 голос
/ 17 октября 2019

Я хочу устранить ошибки в сложном приложении на Python, написанном кем-то другим. Я хотел бы настроить Visual Studio Code [VSC] и его отладчик, чтобы я мог пройти по коду.

Приложение python предназначено для запуска из терминала linux с использованием аргументов, а не как python. По этой причине я не могу ни правильно настроить VSC, ни запустить команды приложения в python. В качестве примера я воссоздал приложение, используя два файла:

File1 myprog:

#!/usr/bin/env python
import sys
def format():
    #print('  myprog > format: sys.argv=',sys.argv)
    import myprog   
    myprog.format_doc()

def main():
    if len(sys.argv) >= 2:
        command = sys.argv[1] 
        if command == '--version':
            print('V1.0')
        elif command == 'format':
            eval(command+'()')
main()

File2 myprogr.py:

import os, sys
def format_doc():
    print('  myprog.py > format_doc: sys.argv=',sys.argv)
    print('  more complicated code I want to debug using several arguments')

Когда я запускаю приложение из терминалаЯ вижу, что аргументы передаются в File2 в sys.argv (я думаю, что это результат eval):

bash>./myprog format hello.txt --someoption
  myprog.py > format_doc: sys.argv= ['./myprog', 'format', 'hello.txt']
  more complicated code I want to debug using arguments

Могу ли я настроить VSC для запуска вышеуказанной команды bash и войти в код python?

В качестве альтернативы, можно ли запустить методы в File2 из python, чтобы можно было легко отлаживать его в VSC? Как видите, я не могу добавить аргументы с помощью python, потому что метод python не принимает входные аргументы:

>>> import myprog
>>> myprog.format_doc()
  myprog.py > format_doc: sys.argv= ['']
  more complicated code I want to debug using several arguments
>>> myprog.format_doc("hello.txt","--someoption","or_maybe_some_option")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: format_doc() takes 0 positional arguments but 1 was given
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...