Python 模块的 运行 时间错误没有显示行号
No line number shown for run-time error from Python module
大多数 Python 错误会产生回溯,显示有问题的语句的行号。但由于某些原因,一些 运行 时间错误不会。
例如,运行ning "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
这解决了命令行中的两个问题:
导入模块时省略.py扩展名。
您需要明确添加路径才能导入此模块(或将其移动到 sys.path 中的目录)。
大多数 Python 错误会产生回溯,显示有问题的语句的行号。但由于某些原因,一些 运行 时间错误不会。
例如,运行ning "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
这解决了命令行中的两个问题:
导入模块时省略.py扩展名。
您需要明确添加路径才能导入此模块(或将其移动到 sys.path 中的目录)。