1. 程式人生 > >python中 .py .pyc .pyw .pyo .pyd檔案

python中 .py .pyc .pyw .pyo .pyd檔案

轉:https://blog.csdn.net/willhuo/article/details/49886663

     DLL檔案即動態連結庫檔案,是一種可執行檔案,它允許程式共享執行特殊任務所必需的程式碼和其他資源。打不開,不過可以使用反彙編;PYD是一種PYTHON動態模組。實質上還是dll檔案,只是改了字尾為PYD,pyd: 擴充套件模組,一般用C或C++編寫,其實可以說是一種更優秀的D語言編寫的。

    以.py副檔名的檔案是原始碼檔案,由python.exe解釋,可在控制檯下執行。當然也可以用文字編輯器進行修改。py是原始檔,pyc是原始檔編譯後的檔案,pyo是原始檔優化編譯後的檔案,pyd是其他語言寫的python庫   


在執行一個.py檔案中的原始碼之後,Python並不會自動生成與該.py檔案對應的.pyc檔案。我們需要自己觸發Python來建立pyc檔案。

      python並非完全是解釋性語言,它是有編譯的,先把原始碼py檔案編譯成pyc或者pyo,然後由python的虛擬機器執行,相對於py檔案來說,編譯成pyc和pyo本質上和py沒有太大區別,只是對於這個模組的載入速度提高了,並沒有提高程式碼的執行速度,通常情況下不用主動去編譯pyc檔案,文件上說只要呼叫了import model那麼model.py就會先編譯成pyc然後載入

1.如果需要特殊的單獨編譯,則只需要使用py_complie這個模組就行了,如下
import py_compile
py_compile.compile(r‘H:\

game\test.py‘)
 
compile函式原型:
compile(file[, cfile[, dfile[, doraise]]])
file 表示需要編譯的py檔案的路徑
cfile 表示編譯後的pyc檔名稱和路徑,預設為直接在file檔名後加c 或者 o,o表示優化的位元組碼
dfile 錯誤訊息儲存的路徑
doraise 可以是兩個值,True或者False,如果為True,則會引發一個PyCompileError,否則如果編譯檔案出錯,則會有一個錯誤,預設顯示sys.stderr中,而不會引發異常

2.如果要把一個資料夾下的所有py檔案都進行編譯,則用下面的命令
import compileall
compileall.compile_dir(dirpath)
dirpath是我們要編譯的
資料夾
的絕對路徑

3.如果要編譯pyo檔案則
編譯成 pyo 就是在控制檯執行 python -O -m py_compile file.py
其中file.py就是我們要編譯的原始檔             主要O為大寫

 


  4.對於.pyw檔案。很多使用過.pyc檔案的同學都知道,.pyc檔案執行的時候桌面會出現黑糊糊的視窗,有的時候這是十分難的。於是.pyw檔案就應運而生了。.pyw檔案與.pyc檔案本質上沒有什麼區別,只是.pyw執行的時候不會出現黑視窗。.pyw 格式主要是被設計來執行開發完成的純圖形介面程式的。 純圖形介面程式的使用者不需要看到控制檯視窗。值得一提的是,開發純圖形介面程式的時候,你可以暫時把 .pyw 改成 .py , 以便執行時能調出控制檯視窗,看到所有錯誤資訊,方便進行修改。