首頁 > 後端開發 > Python教學 > 執行 Python 模組的「python -m」和「python」之間的主要區別是什麼?

執行 Python 模組的「python -m」和「python」之間的主要區別是什麼?

Barbara Streisand
發布: 2024-11-29 22:54:11
原創
932 人瀏覽過

What are the Key Differences Between `python -m` and `python ` for Executing Python Modules?

「-m」在命令列 Python 執行中的多方面作用

通常觀察到 python -m mymod1 mymod2.py args 和 python mymod1.py 參數。 py mymod2.py args 指令都會導致執行 mymod1.py 並符合 sys.argv。然而,-m 開關提供了一系列附加功能,超出了檔案名稱到模組名的轉換範圍。

1.透過模組名稱執行模組

-m 標誌是使用模組名稱(而不是檔案名稱)直接從命令列呼叫 Python 模組的另一種方法。這對於執行檔案名稱可能未知的標準庫模組或第三方套件特別有用。例如,要執行 http.server 模組,只需輸入 python -m http.server.

2。整合到 sys.path

利用 -m 開關不僅會呼叫模組,還會修改 sys.path 以包含當前目錄,這是使用 python mymod1.py 時缺少的功能。這允許執行包含相對導入的本機包,而無需安裝。

3.支援相對導入

除了將目前目錄新增至 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板