導航:首頁 > 源碼編譯 > pyc文件怎麼編譯

pyc文件怎麼編譯

發布時間:2023-05-15 07:52:04

『壹』 python源代碼程序文件擴展名

python源文件後綴是py。
以 py 擴展名的文件是 Python 源碼文件,由 python.exe 解釋,可在控制台下運行。可用文本編輯器讀寫。
Python中經常使用的文件後綴名:
pyc
以 pyc 為擴展名的是Python的編譯文件。其執行速度快於 py 文件且不能用文本編輯編輯查看。所以 pyc 文件往往代替 py 文件發布。
Python 在執行時,首先會將 py 文件中的源代碼編譯成 PyCodeObject 寫入 pyc 文件,再由虛擬機執行 PyCodeObject。
當 Python 執行 import 時會先尋找對應的 pyc或 pyd(dll)文件,如果沒有則將對應的py文件編譯寫入 pyc 文件。pyc文件也可以通過 python -m py_compile src.py 生成。
pyw
pyw 文件與 pyc 文件相似,但 pyw 執行的時候不會出控制台窗口。開發(純圖形界面程序)時可以暫時把 pyw 改成 py 以調出控制台窗口調試。
pyo
pyo 是優化編譯後的程序,不能用文本編輯器編輯。 python -O source.py 即可將源程序編譯為 pyo 文件。
pyd
pyd 一般是 Python 外的其他語言如 C/C++ 編寫的 Python 擴展模塊,即 Python 的一個動態連接庫,與 dll 文件相當。在linux系統中一般為.so文件

『貳』 如何編譯Python程序生成.pyc文件

pyc文件就是 py程序編譯後得到的位元組碼文件 (py->pyc),python為了提高運行效率也會進行編譯,有時候編譯出pyc文件後,刪除py文件也不會出錯助於pyc文件的產生,給樓主舉例加入你有一個邏輯文件abcd.py,裡面有很多函數A,B,C,D,這個時候,如果你有一個test腳本去導入了abcd.py,只要你運行test腳本,在adcd.py目錄下就會生成一個abcd.pyc文件,而不管你是否需要調用A,B,C,D函數

『叄』 python如何編譯生成二進制文件

用py2exe 打包成可以執行文件

『肆』 python寫的程序,轉成了exe文件,怎麼進行反編譯為python源碼

1、電腦桌面,輸入「win+R」組合鍵,在彈出窗口中輸入「cmd」,點擊確定。

『伍』 Python程序代碼混淆、編譯、打包、運行(桌面程序防破解向)

像Python這種解釋性的語言,要想私有化部署的同時又保護好源碼,就像是對於魚和熊掌的追求。

雖然做不到盡善盡美,但是對代碼進行混淆,增加一點破解的難度,或許能規避一些泄露的風險。

本次演示環境:linux

確保要發布的包根目錄("demo")中有__main__.py文件,這個是程序執行入口。

編譯

批量改名.pyc文件

移動.pyc文件

清理.py文件

清理__pycache__文件夾

打包成zip

運行時只要將zip文件作為參數即可

最終整合腳本

調用方式

對於在變數和函數名上的混淆有點小兒科,而對於跨文件的類名的混淆又太容易實現。

所以對於混淆程度的取捨,要視工程的規模而定。

2.1 混淆工具pyminifier

在原來的工具 pyminifier上修復了幾個bug。

安裝:

python3 安裝

或者clone下來,自行安裝

使用例子

2.2 源碼變更

不同的配置對於源碼的要求不同,以下是筆者踩過的坑。

其他混淆想法

結合混淆、編譯和打包,嘗試出以下發布腳本。

主要的思路 :創建一個工作目錄tmp,然後在此目錄下混淆、編譯python代碼,完成後把內容打包成pyc文件,再將pyc文件和其他配置文件移動到dist,發布dist即可。

混淆的目的是最大程度保護源碼,在發布到客戶端後不被輕易破解。

『陸』 python-uncompyle反編譯

python的編譯後文尺蔽件pyc,可以將pyc文件反編譯為py文件。

相應的工具: uncompyle

github地址: https://github.com/rocky/python-uncompyle6/

安裝: pip install uncompyle

安裝好後,注碰困衫意執行的命令為 uncompyle6 ,而不是 uncompyle 。

查看幫助命令:笑腔 uncompyle6 --help 、 uncompyle6 -h

反編譯單個文件 : uncompyle6 foo.pyc > foo.py

反編譯多個文件: uncompyle6 -o . *.pyc

例子:

『柒』 python怎麼編譯成pyc文件

如下命令:

python-mcompileallxxx.py

可以對當前目錄下的xxx.py文件生成pyc

『捌』 PyInstaller打包、解包與反編譯.pyc文件

PyInstaller官網: https://www.pyinstaller.org/

假設有一個demo.py文件,在同目錄下啟動命令行或從命令行進入當前文件夾,使用如下命令打包

打包後同目錄下會產生兩個文件夾build和dist(distribution),dist文件夾內就是目標程序。

解包使用pyinstxtractor工具
Github地址: https://github.com/extremecoders-re/pyinstxtractor
假設在第1步中,使用-F參數將demo.py打包為獨立可執行文件demo.exe,進入dist文件夾,將pyinstxtractor.py放在該目錄下,在該目錄下啟動命令行或從命令行進入該文件夾,使用如下命令解包

解包得到的內容將放入同目錄下的demo.exe_extracted文件夾

找到目標.pyc文件,比如demo.pyc
反編譯.pyc文件使用uncompyle6工具
Github地址: https://github.com/rocky/python-uncompyle6
可以直接通過pip安裝uncompyle6

由於pyinstaller在打包可執行文件時會將.pyc文件頭部的16位元組magic head去掉,因此需要對需要反編譯的.pyc文件進行預處理,將文件頭部的16位元組magic head補充完整。這里使用一個開源的16進制編輯器ImHex。
Github地址: https://github.com/WerWolv/ImHex
進入demo.exe_extracted文件夾,用16進制編輯器打開struct.pyc文件復制頭部的16位元組magic head,再用16進制編輯器打開demo.pyc文件,將頭部的16位元組改為magic head,即將圖2中的部分更改為圖1中的值即可。

使用前一個命令,反編譯後的源碼內容會顯示在命令行窗口內;使用後一個命令,源碼會列印到指定文件中,如demo.py。
到此為止可以

Invalid pyc/pyo file - Magic value mismatch!
補充magic head後即可正常反編譯。

如果不是項目成員給所謂的程序而不肯給源碼,而我又繞不過這個程序的問題,我才不想折騰這些有的沒的。

『玖』 將.py 文件轉換為.pyc 文件的命令要在哪裡運行

在命令行輸入:python-mpy_compilemyFile.py就可以生成對應的pyc文件了。之後就可以直接執行pyc文件。pythonmyFile.pyc。
python的pyc文件是一種二進制文件,py文件變成pyc文件後,載入的速度有所提高,而且pyc是一種跨平台的位元組碼,是由python的虛擬機來執行的,這個是類似於JAVA或者.NET的虛擬機的概念。
由於python程序的py文件很容易泄露源代碼,所以python可以編譯成保密的pyc文件。

閱讀全文

與pyc文件怎麼編譯相關的資料

熱點內容
軟通動力程序員節2021 瀏覽:845
安卓系統如何卸載安裝包 瀏覽:870
簡訊刪除助手文件夾 瀏覽:688
java辦公自動化 瀏覽:340
php中超鏈接 瀏覽:253
linux默認路由設置 瀏覽:36
linux如何掛載iso 瀏覽:432
vs程序換文件夾後不能編譯 瀏覽:557
安卓源碼編譯輸入腳本沒反應 瀏覽:47
phpmysql自增 瀏覽:167
把ppt保存為pdf 瀏覽:533
汽車密封件加密配件 瀏覽:887
黑馬程序員15天基礎班 瀏覽:560
java調整格式 瀏覽:521
香港雲伺服器租用價 瀏覽:78
linuxsublime3 瀏覽:560
imac混合硬碟命令 瀏覽:279
沈陽用什麼app租房車 瀏覽:859
00後高中生都用什麼app 瀏覽:239
戴爾塔式伺服器怎麼打開獨立顯卡 瀏覽:808