通常觀察到 python -m mymod1 mymod2.py args 和 python mymod1.py 參數。 py mymod2.py args 指令都會導致執行 mymod1.py 並符合 sys.argv。然而,-m 開關提供了一系列附加功能,超出了檔案名稱到模組名的轉換範圍。
-m 標誌是使用模組名稱(而不是檔案名稱)直接從命令列呼叫 Python 模組的另一種方法。這對於執行檔案名稱可能未知的標準庫模組或第三方套件特別有用。例如,要執行 http.server 模組,只需輸入 python -m http.server.
利用 -m 開關不僅會呼叫模組,還會修改 sys.path 以包含當前目錄,這是使用 python mymod1.py 時缺少的功能。這允許執行包含相對導入的本機包,而無需安裝。
除了將目前目錄新增至 sys.path 之外,-m 還允許執行具有相對導入的模組。這是透過將 __package__ 變數設定為指定模組名的父模組來實現的,使相對導入能夠如預期運作。
說明之間的差異調用Python 模組的方法,下表列出了關鍵屬性:
Invocation Method | sys.path Modification | name | package |
---|---|---|---|
import |
None | Absolute form of |
Immediate parent package |
python |
Includes final directory in |
'__main__' | None |
python -m |
Includes current directory | '__main__' | Immediate parent package |
-m 開關in python 是一個多功能工具,提供廣泛的功能,而不僅僅是簡單地將檔案名稱轉換為模組名稱。它提供了一種從命令列執行模組、處理相對導入並將本地包整合到 sys.path 的無縫方法。這使其成為在本機和外部使用 Python 模組的開發人員的寶貴工具。
以上是執行 Python 模組的「python -m」和「python」之間的主要區別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!