当前位置: 首页 > 面试题库 >

如何从命令行调试使用python -m运行的Python模块?

马沛
2023-03-14
问题内容

我知道可以从命令行使用以下命令调试Python脚本

python -m pdb my_script.py

如果my_script.py是打算与一起运行的脚本python my_script.py

但是,python模块my_module.py应与一起运行python -m my_module。即使包含相对导入的脚本也应使用来运行python -m。如何python -m my_modulepdb的控制下运行?以下 无效

python -m pdb -m my_module

问题答案:

您现在无法执行此操作,因为会-m终止选项列表

python -h
...
-m mod : run library module as a script (terminates option list)
...

这意味着 mod的 工作是解释其余的参数列表,而这种行为完全取决于 mod 在内部的设计方式以及它是否支持另一个 -m

让我们看看里面有什么发生PDB的
蟒蛇2.x的 。实际上,没有什么可解释的,它只希望提供一个脚本名称:

   if not sys.argv[1:] or sys.argv[1] in ("--help", "-h"):
        print "usage: pdb.py scriptfile [arg] ..."
        sys.exit(2)

    mainpyfile =  sys.argv[1]     # Get script filename
    if not os.path.exists(mainpyfile):
        print 'Error:', mainpyfile, 'does not exist'
        sys.exit(1)

    del sys.argv[0]         # Hide "pdb.py" from argument list

    # Replace pdb's dir with script's dir in front of module search path.
    sys.path[0] = os.path.dirname(mainpyfile)

    # Note on saving/restoring sys.argv: it's a good idea when sys.argv was
    # modified by the script being debugged. It's a bad idea when it was
    # changed by the user from the command line. There is a "restart" command
    # which allows explicit specification of command line arguments.
    pdb = Pdb()
    while True:
        try:
            pdb._runscript(mainpyfile)

与当前发布的 python
3.x
版本相同

好消息

5天前,已合并了可以执行您要问的请求请求。多么神秘的巧合!这是代码

因此,请稍等一下即将发布的python 3.x版本,以解决此问题)



 类似资料:
  • 我想创建一个运行多个python项目的脚本。每个项目都是阻塞的(意味着每个项目都应该永远运行),所以这个脚本必须并行运行每个项目。此外,我希望在关闭主shell之后,所有这些进程都关闭。这是我想出的shell代码 我尝试使用&使python进程异步运行,但是脚本在第二行之后没有继续,只有第一个项目在运行。 有没有一种方法可以运行所有的python进程?

  • 问题内容: 我需要从python运行此linux命令,并将输出分配给变量。 我试过使用pythons命令库来做到这一点。 但是a结束了。我得到的输出是: 但预期的输出是: 有人知道如何阻止输出中断吗?有人可以建议其他方法吗? 问题答案: 显然限制了其输出以适合终端的假定宽度。您可以使用环境变量或选项覆盖此宽度。 该模块已弃用。使用得到的输出,并在Python进行过滤。不要按照其他答案的建议使用,在

  • 问题内容: 我创建了以下名称为的命令文件: 当我从命令行运行上述脚本时: 它运行成功。 但是,当我在python中尝试以下操作时: 我得到错误: 问题答案: 您的命令将像这样运行WinSCP: 什么是无效的语法。。之后不能有空格。 这应该工作:

  • 我尝试在python脚本中运行这个ps命令: subprocess.call('powershell.exe$username="admin@example.com";$code=Get-Content"C:/Scricript/user.txt"|ConvertTo-SecureString;$cred=new-ject-typenameSystem.Management.Automation.

  • 问题内容: 我在Windows上,但是我正在使用腻子壳连接到linux计算机,并想安装python 2.7。无法弄清楚该怎么做。如何从命令行下载python? 问题答案: wget –no-check-certificate https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz tar -xzf Python-2.7.11.tgz c

  • 问题内容: 我尝试运行此脚本: 现在的问题是:我怎样才能把这些变量,,到变量? 问题答案: Python有很多执行字符串格式化的方法。最简单的方法之一就是将字符串的各个部分简单地串联在一起: