Как я могу отлаживать скрипт Python из командной строки с помощью PyCharm?

Я хочу отлаживать скрипт Python, который принимает несколько аргументов командной строки, например

myscript.py --input1 ./dir/file1.txt --input2 ./dir/file2.txt

в Pycharm. Я знаю, что могу использовать Run/Debug Configuration для добавления аргументов командной строки. Однако я чувствую, что это довольно громоздко, так как мне приходится открывать меню каждый раз, когда я хочу изменить аргументы. Кроме того, нет завершения имени файла при указании файлов в качестве аргументов.

Я бы предпочел вызывать myscript.py из моей любимой оболочки, где у меня есть завершение имени файла и т. д., но все же использовать отладчик PyCharm для этого скрипта.


person Gregor Sturm    schedule 08.01.2016    source источник
comment
Что вы думаете о получении аргумента из вашего кода? Я имею в виду попытку получить аргументы после запуска скрипта. Как raw_input.   -  person kia    schedule 08.01.2016
comment
Вы должны научиться отлаживать свой код с помощью модульных тестов. Вместо того, чтобы запускать сценарии с аргументами, вы должны реализовать функцию do_awesome_work(input1, input2) и написать тестовые примеры с соответствующими входными данными. Затем вы можете легко запустить тестовые примеры в отладчике PyCharm.   -  person awesoon    schedule 08.01.2016
comment
Есть ли причина, по которой вы пытаетесь это сделать? Если вы пытаетесь выполнить отладку с несколькими входными данными, возможно, стоит отлаживать один случай и выполнять модульное тестирование других. Если по какой-то причине вам действительно нужно отлаживать несколько случаев, вы можете просто обойти аргументы для этой отладки, установить значения как переменные и проверить, что аргументы командной строки работают отдельно.   -  person Daniel Underwood    schedule 08.01.2016


Ответы (1)


Краткий ответ: Tools> Attach to Process...

Длинный ответ:

  1. Поместите следующую строку в самом начале вашего кода

    input("press Enter to continue")
    
  2. Запустите свой код в оболочке

    myscript.py --input1 ./dir/file1.txt --input2 ./dir/file2.txt
    
  3. Откройте Pycharm и используйте его, чтобы открыть файл myscript.py. Установите break points в любом месте для отладки. Выберите Tools> Attach to Process... и выберите процесс, который запущен myscript.py.

  4. Вернитесь в оболочку myscript.py и нажмите Enter

Возможные проблемы: ptrace у вас нет разрешения что-либо делать

Решение:

sudo su
echo 0 > /proc/sys/kernel/yama/ptrace_scope

или вы можете установить 0 непосредственно в

/etc/sysctl.d/10-ptrace.conf
person dragon2fly    schedule 08.01.2016
comment
Я считаю, что в текущей версии он находится под Run > Attach to Local Processes... - person AuHau; 08.08.2018