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
。
使用方法
- 新建一個main.py文件。
import os
import sys
#將當前so所在的路徑添加到sys.path, python是在sys.path路徑中找模塊的
sys.path.append(os.path.realpath('.'))
from hello import hello
hello()
pyd文件理論上也是一樣的。