我该如何使用PyCharm在命令行中调试Python脚本?

6

我想调试一个带有多个命令行参数的Python脚本,例如

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

Pycharm中,我知道可以使用运行/调试配置添加命令行参数。但是,我觉得这样做相当繁琐,因为每次想要修改参数时都必须打开菜单。此外,在指定文件作为参数时没有文件名自动完成功能。
我更喜欢从我喜欢的Shell中调用myscript.py,在那里我可以使用文件名自动完成等功能,但仍然可以使用PyCharm调试该脚本。

你对从代码中获取参数有什么想法?我的意思是在运行脚本后尝试获取参数,就像 raw_input - kia
你应该学习如何使用单元测试来调试你的代码。不要通过运行带有参数的脚本,而是应该实现一个函数 do_awesome_work(input1, input2) 并编写适当输入的测试用例。然后你可以在 PyCharm 调试器下轻松地运行这些测试用例。 - awesoon
你为什么要这样做呢?如果你想用多个输入进行调试,那么调试一个案例并对其他案例进行单元测试可能是值得的。如果出于某种原因你确实需要调试多个案例,那么你可以绕过参数进行调试,将值设置为变量,并测试命令行参数是否能够单独工作。 - Daniel Underwood
1个回答

6
简短回答: 工具>附加到进程... 长篇回答:
  1. Put a following line at very first of your code

    input("press Enter to continue")
    
  2. Launch your code in shell

    myscript.py --input1 ./dir/file1.txt --input2 ./dir/file2.txt
    
  3. Open Pycharm and use it to open your myscript.py. Set break points at anywhere you like to debug. Select Tools> Attach to Process... and select the process that myscript.py is running.

  4. Come back to the shell of myscript.py and hit Enter

可能遇到的问题: ptrace 没有执行某些操作的权限。
解决方案:
sudo su
echo 0 > /proc/sys/kernel/yama/ptrace_scope

或者您可以直接在中设置为0

/etc/sysctl.d/10-ptrace.conf

2
我相信在当前版本中,它位于“运行>附加到本地进程…”下。 - AuHau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接