没有为Python模块显示运行时错误的行号

时间:2015-05-31 12:03:40

标签: python numbers runtime-error line traceback

大多数Python错误都会产生回溯,显示违规语句的行号。但由于某些原因,某些运行时错误没有。

例如,运行" python -m mymodule.py"在只包含两行的模块上:

args = {}
if len(args > 2): print("this is a run-time error. Should be: len(args) > 2")

失败了:

c:\python34\python.exe: Error while finding spec for 'mymodule.py' (<class 'TypeError'>: unorderable types: dict() > int())

这个代码示例来自一个更大的模块,它失败了,没有行号使得很难找到编码错误。

3 个答案:

答案 0 :(得分:1)

执行:

python -m mymodule.py

请改为尝试:

python mymodule.py

答案 1 :(得分:0)

您使用的是哪个python版本? Python 2.7显示错误:

PATH>python -m scrap
    Traceback (most recent call last):
    File “C:\Python27\lib\runpy.py”, line 162, in _run_module_as_main
    “__main_J, fname, loader, pkg_name)
    File “C:\Python27\lib\runpy.py”, line 72, in _run_code
    exec code in run_globals
    File “PATH\scrap.py”, line 2, in <module>
        if len(args > 2): print(”this is a run-time error. Should be: len(args) > 2’
    )
    TypeError: object of type ‘bool’ has no len()

答案 2 :(得分:0)

当你使用-m时,python在sys.path中搜索模块,并且找不到你指定的文件。这是因为路径没有(并且出于稳定性和安全性的原因通常不应该包括当前工作目录。

由于错误是在命令行而不是文件内部产生的,因此错误没有行号。

最后,要解决此问题,请键入

python -m ./mymodule

这解决了命令行中的两个问题:

  1. 执行模块导入时会省略.py扩展名。

  2. 您需要显式添加路径才能导入此模块(或将其移动到sys.path中的目录中)。