python m 匯入模組啟動

2021-09-24 22:18:55 字數 1180 閱讀 5918

兩種方式啟動: 

python ***.py  -----直接執行的方式啟動(此時指令碼__name__為"__main__")

python -m ***.py  ------以模組的方式啟動(此時指令碼的__name__屬性值依然不再是"__main__"而是"***")

不同的載入py檔案的方式,主要是影響——sys.path 這個屬性。sys.path 就相當於liunx中的path

列表裡的''表示當前目錄,命令執行的目錄

直接啟動是把run.py檔案,所在的目錄放到了sys.path屬性中。

模組啟動是把你輸入命令的目錄(也就是當前路徑),放到了sys.path屬性中

# 目錄結構如下

package/

__init__.py

mod1.py

package2/

__init__.py

run.py

檔案內容如下

# run.py 內容如下

import sys

from package import mod1

print(sys.path)

結果如下

# 直接啟動(失敗)

➜ test_import_project git:(master) ✗ python package2/run.py

traceback (most recent call last):

file "package2/run.py", line 2, in from package import mod1

importerror: no module named package

# 以模組方式啟動(成功)

➜ test_import_project git:(master) ✗ python -m package2.run

['',

'/usr/local/cellar/python/2.7.11/frameworks/python.framework/versions/2.7/lib/python27.zip',

...]

python m引發的對模組的認識

python m 以模組的方式執行 在檔案內部,我們一般通過下面的 來區分當前指令碼,是作為模組匯入,還是作為指令碼直接執行。if name main print 模組直接執行 當檔案作為指令碼直接執行時,這段 會產生 輸出字串 模組直接執行 當檔案作為模組被匯入時,不會產生 不輸出字串 模組直接執...

python模組匯入與模組包匯入

main.py程式第一次匯入指定檔案mod.py時,執行 找到模組檔案mod.py 編譯成位元組碼 可選 執行.pyc位元組碼,建立mod.py中定義的物件。匯入模組後,模組物件會被儲存在sys.modules的表中。每次匯入時,若此表中已存在相關模組,以上3步會被跳過。1.搜尋模組檔案 按順序 程...

python 匯入模組

最近開始學習python,遇到一些匯入模組的問題,花了幾分鐘終於琢磨明白了,給初學者介紹幾種型別 一 test sys test1 nv1.py nv2.py nv1.py 如下 classdog defadd self a,b self.a a self.b b c self.a self.b r...