使用来自终端的参数调试python脚本

Kou*_*ura 2 python debugging bash pdb

我有一个python脚本,它接受输入参数并运行以响应终端中的以下命令(bash,Mac OSX).

python test.py arg1 arg2
Run Code Online (Sandbox Code Playgroud)

有没有调试模式运行相同的脚本,而无需编辑代码,包括一个很好的方式import pdbpdb.set_trace()

例如,如果我正在使用iPython控制台,我可以通过以下方式执行此操作:

%run -d test.py arg1 arg2
Run Code Online (Sandbox Code Playgroud)

这很简单,不是吗?为了在终端中实现同样的目的,我认为以下可能有效,但它没有:

python -c "import pdb; import sys; sys.argv = ['test.py', arg1, arg2];pdb.run('test.py')"
Run Code Online (Sandbox Code Playgroud)

代码使用参数运行,但不是在pdb调试模式下运行.是不是很难做到,我应该坚持使用pdb.set_trace或者iPython的%run -d

Mic*_*man 8

尝试:

python -m pdb test.py arg1 arg2
Run Code Online (Sandbox Code Playgroud)

运行作为脚本python -m pdb运行pdb.如果test.py在您的路径中的某个位置而不是您当前的工作目录,这可能是一个有用的替代:

python -m pdb "$(which test.py)" arg1 arg2
Run Code Online (Sandbox Code Playgroud)


Kou*_*ura 2

在 Spyder IDE 中调试带有输入参数的 python 脚本 (2.3.4)

  1. 运行>配置...
  2. 选择运行配置>(选择打开的感兴趣的脚本)
  3. 常规设置>命令行选项:(arg1 arg2 arg3使用空格作为分隔符,就像在命令行中一样)
  4. 工作目录:(选择文件夹)
  5. 单击“确定”

然后从菜单调试。这相当于在 Spyder 的 iPython 控制台中执行以下命令。

debugfile('/Users/xxx/xxx/test.py', args='arg1 arg2', wdir='/Users/xxx/xxx/')
Run Code Online (Sandbox Code Playgroud)

使用 PyCharm 执行此操作非常相似。

  1. 运行 >编辑配置
  2. 从菜单中选择 python 脚本
  3. 窗格Configuration
  4. 脚本参数arg1 arg2

然后运行>调试>选择文件。

在 iPyhton Console 中你也可以尝试这个(假设 test.py 在你当前的文件夹中):

%run -d test.py arg1 arg2
Run Code Online (Sandbox Code Playgroud)