Я хочу устранить ошибки в сложном приложении на 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