如何打包發布加密的 Python 源代碼


這里介紹一種使用 PyInstaller 和 PyArmor 來發布加密 Python 源代碼的方式,能夠達到以下目的

把所有 Python 源代碼打包成為可執行文件,客戶不需要 Python 就可以運行
所有 Python 的源代碼都經過加密
在 Python 源代碼執行過程中,每一個函數執行完成之后,其代碼塊會重新被加密
可以設置 Python 源代碼的有效期,過時之后無法在運行
可以綁定 Python 源代碼到指定硬盤或者網卡
這里面是有到兩個工具 PyInstaller 和 PyArmor,其中前者可以主要用於把源代碼打包成為一個可執行文件,自動查找依賴的包,如果用到了圖形庫,例如 Tkinter, Qt, 使用這個工具可以很方便的進行打包。后者則可以加密源代碼,並且把加密的代碼綁定到硬盤和網卡,也可以設置有效期。

和其他打包工具一樣,PyInstaller 對 Python 源代碼只是簡單編譯成為 .pyc 文件,然后打到一個壓縮包里面。雖然它提供了一個簡單的加密方式[^1],但是很容易就可以使用調試器破解,真正的加密還依賴 PyArmor

PyArmor 對代碼的加密分為兩個層次,首先是對整個 .pyc 文件進行加密,其次是對每一個函數進行動態加密,即在函數開始調用的時候解密,執行完成之后在重新加密,這樣從更高層次的確保了 Python 源代碼的安全[^2]。

下面用一個具體的例子來說明如果打包發布一個腳本 hello.py

首先安裝 PyInstaller 和 PyArmor

pip install pyinstaller
pip install pyarmor
然后使用 PyArmor 打包並加密腳本成為可執行文件,打包好的可執行文件放在 dist/hello 下面

pyarmor pack hello.py
運行打包好的文件

dist/hello/hello
生成一個限制使用時間並綁定到網卡的認證文件 licenses/code-01/license.lic

pyarmor licenses --expired 2019-01-01 --bind-mac 01:a2:b3:c4:d6:e6 code-01
使用新的授權文件替換默認授權文件,再次運行打包好的可執行文件

cp licenses/code-01/license.lic dist/hello
dist/hello/hello
更多功能,請訪問 PyInstaller 主頁 和 PyArmor 主頁
原文鏈接:https://blog.csdn.net/weixin_43572000/java/article/details/83986683


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM