簡體   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