大多数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())
这个代码示例来自一个更大的模块,它失败了,没有行号使得很难找到编码错误。
答案 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
这解决了命令行中的两个问题:
执行模块导入时会省略.py扩展名。
您需要显式添加路径才能导入此模块(或将其移动到sys.path中的目录中)。