[英]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
這解決了命令行中的兩個問題:
進行模塊導入時會省略 .py 擴展名。
您需要顯式添加路徑以導入此模塊(或將其移動到 sys.path 中的目錄中)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.