【Python基礎(chǔ)】加密你的Python源碼順便再打個包如何?
本篇為專屬于“交通科研Lab”志愿者系列推文活動,為大家?guī)斫煌ǜ咝4T博們原創(chuàng)推文。為作者點贊,歡迎大家關(guān)注交流!??!
點擊藍字 關(guān)注我們
成為一個智慧、快樂和富有的人。
——王宇航

導(dǎo)語
熟悉Python的小伙伴,有沒有考慮過:如何讓其他小伙伴(包括沒有Python基礎(chǔ)的小伙伴)更方便更快捷地使用你的Python程序,且不用擔心自己的核心程序泄漏出去呢?
首先想到的便是將程序源碼編譯成一個exe文件,這樣所有小伙伴直接雙擊exe文件便可以運行程序。但這便涉及到一個問題,這個操作只是對源碼進行一個打包,類似于添加到壓縮文件,用戶也可以輕易地將壓縮文件解壓,到時候程序中的所有源碼便會暴露出來。
考慮到在C和C++這種編譯型語言中是將所寫的語言編譯成機器代碼,即二進制代碼,無法通過二進制代碼反編譯出源碼。Python是一門解釋型語言,但我們可以通過Cython庫將我們程序中的核心源碼編程成pyd格式的文件,即Python環(huán)境中的DLL文件,其是二進制編碼,同樣無法被反編譯。
由此,對于我們的Python源碼,我們可以先將其核心部分編譯成pyd格式進行加密,然后再將程序打包成一個exe文件,方便用戶使用,讓你的Python程序更安全、更便捷。文章主要分為三個部分,希望這篇文章可以為有這方面需求的小伙伴提供一些幫助:
1.首先是新建一個Python小項目,簡單實現(xiàn)對文件夾內(nèi)圖片進行批量重命名的操作,以此為示例,便于理解和后續(xù)操作的描述;
2.其次是對Python源碼加密操作的詳細講解;
3.最后講解了Python程序的打包操作,并展示最終實驗效果。
新建Python項目
初始化虛擬環(huán)境
在項目目錄下新建一個干凈的Python虛擬環(huán)境,可以直接在PyCharm中操作,或者使用virtualenv venv命令創(chuàng)建環(huán)境,從下圖可以看到環(huán)境中只包含pip和setuptools兩個庫。

完成Python項目
項目文件夾下存放著5張待命名的圖片和兩個python文件,內(nèi)容如下圖所示,rename.py中定義了重命名圖片的函數(shù)my_rename,run_rename.py是項目的啟動文件,通過調(diào)用my_rename函數(shù)完成圖片的重命名。

rename.py

run_rename.py

Python源碼加密
安裝Cython
Cython全稱是C-Extensions for Python,可以看作是python的一個第三方庫,關(guān)于Cython的介紹,官網(wǎng)(https://cython.org/)上是這樣的,有興趣的小伙伴可以多去了解一下。安裝命令:pip install Cython

設(shè)置setup.py文件
在項目文件夾下新建一個setup.py文件,文件內(nèi)容如下,setup中的name變量可以自己起一個名字,關(guān)鍵是修改ext_modules變量,將需要加密的python文件名填入其中即可。
setup.py

運行setup.py文件
在項目文件夾的目錄下,打開命令終端,輸入命令python setup.py,運行setup.py文件,也可在PyCharm中直接運行。運行結(jié)果如下圖所示,提示代碼已生成,同時也給出了生成文件的路徑,通常情況下文件生在虛擬環(huán)境的Lib\site-packages目錄下。

查看生成文件的目錄,新生成如下兩個文件,pyd格式文件便為對核心源碼進行加密后的文件,其無法被反編譯。然后在項目文件夾下生成rename.c和build文件夾,可以直接刪除,此時rename.py和setup.py也可以從項目目錄下移除,故目錄下只剩run_rename.py和5張待重命名的圖片。

Python程序打包
安裝Pyinstaller
Pyinstaller也是Python的第一個第三方庫,使用起來很方便,更多信息詳見官網(wǎng)(https://pyinstaller.org/),安裝命令:pip install pyinstaller
生成spec文件
運行如下命令便可在項目目錄下生成spec文件,其中-F參數(shù)是指將程序打包為一個exe文件,可以用文本編輯器打開并編輯spec文件,根據(jù)不同的程序打包需求,對spec文件中的參數(shù)進行對應(yīng)的調(diào)整,后續(xù)我們會再推出一篇文章來詳細講述打包相關(guān)的操作。
pyi-makespec -F run_rename.py
生成exe文件
運行命令:pyinstaller run_rename.spec,在當前目錄的生成build和dist文件夾,在dist文件夾下找到打包好的exe文件,將其復(fù)制出來,剛剛生成的的文件及目錄可以直接刪除。
運行exe文件
將生成的exe文件放到圖片的文件夾中,雙擊運行exe文件,彈出黑窗口后消失(也可在命令終端中輸入對應(yīng)的exe文件名運行,此時在終端上可以看到程序運行過程打印出來的信息),發(fā)現(xiàn)圖片的文件名已經(jīng)修改完成,OK,Python源碼的加密和打包功能實現(xiàn)。

編輯:莊楨

往期精彩回顧
獲取一折本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開:
https://t.zsxq.com/662nyZF
本站qq群1003271085。
加入微信群請掃碼進群(如果是博士或者準備讀博士請說明):
