Python 文件類型詳解 及 生成使用 so/pyd文件

python文件類型

.py文件

以.py爲擴展名的文件是python代碼源文件,可以直接看到代碼,由python解釋器執行。

.pyc

以.pyc爲擴展名的文件是代碼源文件經過編譯後的文件。
其執行速度比py文件快。
進行簡單編譯,並未加密,反編譯可以得到源代碼。

.pyw

.pyw文件其本質上和.pyc文件是一質的。
區別在於執行.pyc文件GUI程序會出現控制檯,執行點.pyw的GUI程序不會出現控制檯。

.pyo

“python -O 源文件” 即可將 Python 源程序編譯成 .pyo 文件,但有時仍得采用 .pyc 作後綴,才能正常運行。
.pyo 文件是相對 .pyc 而言的,優化編譯後的 Python 文件。

.pyd/so

可以反彙編,但是無法反編譯。
.pyd 文件是非 Python,由其它編程語言 “編寫-編譯” 生成的 Python 擴展模塊。
Cython 可將個人基於 Python 語言編寫的 Python 模塊編譯成具有 C 語言特性的 .pyd 或so文件。實質上是先轉爲C代碼再轉pyd/so文件。

生成so/pyd文件

  • 安裝easycython,目前僅支持到python3.6。pypi地址
    pip install easycython
  • 將需要生成so/pyd文件的py文件改成pyx後綴。
    如: pay.py命名爲: pay.pyx
  • 使用命令easycython xxx.pyx自動生成pyd(windows)so(linux)
  • 其中生成的文件名hello.cpython-36m-x86_64-linux-gnu.so中間部分去掉,如hello.so

選區012.png

使用方法

  • 新建一個main.py文件。
import os
import sys

#將當前so所在的路徑添加到sys.path, python是在sys.path路徑中找模塊的
sys.path.append(os.path.realpath('.'))
from hello import hello 
hello()

選區013.png

pyd文件理論上也是一樣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章