python 編譯源文件
阿新 • • 發佈:2018-05-27
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 編譯源文件