繁体   English   中英

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

[英]No line number shown for run-time error from Python module

大多数 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())

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

你执行:

python -m mymodule.py

试试这个:

python mymodule.py

您使用的是哪个 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()

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

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

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

python -m ./mymodule

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM