1. 程式人生 > >python 編譯源文件

python 編譯源文件

spa org 開始 TP pil bubuko all class 14.

背景

近期項目到了部署的階段。由於項目後臺和算法都是用Python "擼的",但是又不希望將源代碼直接 "release" 到 “客戶”哪裏。於是開始思考。。。

首先,按照慣性思維,能否將編譯後的東東放出去呢?(類似java或.net 的部署方式)

再次,是不是能否將“關鍵部分”的代碼保護起來呢?

解決方案

按照第一種思路,我們能將Python編譯好的東西release出去呢?經過一些簡單的理論查找和時間。發現了可行的解決辦法。於是乎,就在今天的博客隨筆中將其記錄下來吧 :)

Python 生成編譯後的二進制文件的方法,官方提供了兩種方式: py_compile, compileall

1) 使用模塊 py_compile 編譯單文件

1.1 進入到Python交互環境中,鍵入一下命令

import py_compile
py_compile.compile(‘/home/ct/Dowork.py‘)

或者直接執行腳本

python -m py_compile /home/ct/Dowork.py

運行結果如下:

技術分享圖片

技術分享圖片

2) 使用模塊 compileall 編譯多個文件或目錄, 方法和上面的一樣,這裏直接貼出結果:

技術分享圖片

技術分享圖片

可以看到,我們一共將4個Python“源文件”生成為編譯後的“二進制”文件。 到這裏我們編譯工作已經完成!!

測試程序運行

程序的依賴關系為: Dowork.py 引用statics.py 中定義的方法, 經過測試,發現在刪除statics.py 源文件但是保留 statics.pyc 的情況下,運行Dowork.py中的測試程序程序依然正常!!

因此,可以宣告: 這次將源碼編譯後,程序依然可以正常工作。 Well done!!

參考:

https://docs.python.org/2/library/py_compile.html

https://docs.python.org/2.7/library/compileall.html

python 編譯源文件