編譯python生成 pyc檔案

2022-08-15 04:21:14 字數 1474 閱讀 1925

pyc

是由py檔案經過編譯後二進位制檔案,py檔案變成pyc檔案後,載入的速度有所提高,而且pyc是一種跨平台的位元組碼,是由python

的虛擬機器來執行的。pyc的內容,是跟python的版本相關的,不同版本編譯後的pyc檔案是不同的,2.5編譯的pyc檔案,2.4版本的 python是無法執行的。pyc檔案也是可以反編譯的,不同版本編譯後的pyc檔案是不同的,根據python原始碼中提供的opcode,可以根據 pyc檔案反編譯出 py檔案原始碼,網上可以找到乙個反編譯python2.3版本的pyc檔案的工具,不過該工具從python2.4開始就要收費了,如果需要反編譯出新版本的pyc檔案的話,就需要自己動手了(俺暫時還沒這能力^--^),不過你可以自己修改python的源**中的opcode檔案,重新編譯 python,從而防止不法分子的破解。(來自

編譯.py檔案有以下幾種方式,當然所有這些方式都是使用了py_compile的compile()方法。同時我們可以使用compileall模組中的compile_dir來編譯某個資料夾下面所有的.py檔案,以及可以使用compile_path來依次編譯sys.path制定路徑下的.py檔案。如果看過compileall模組的原始碼我們可以知道compileall編譯.py檔案其實還是呼叫了py_compile的compile()方法。

1、通過寫python**來編譯.py檔案,然後執行這個python指令碼即可,執行過程中輸入你要編譯的.py檔案。

import   py_compile;  

file=raw_input( "please enter filename: ");

py_compile.compile(file);

2、如果是在linux

環境下,可以通過寫乙個bash指令碼編譯.py。

#!   /bin/sh

(echo   'import   compileall ';   echo   'compileall.compile_dir( "./ ") ')   |   python  

完成上述**後用bash命令執行即可。

3、直接通過命令來執行,可以看到下面的命令中並沒有用到compile()函式, 這是因為py_compile模組的main()函式中呼叫了compile().

python -m py_compile

test

.pypython -o -m py_compile test.py

-o 優化成位元組碼

-m 表示把後面的模組當成指令碼執行

-oo 表示優化的同時刪除文件字串

如果你想看compile(), compile_dir(), compile_path()具體每個引數是幹嗎用的,可以使用print py_compile.compile().__doc__來檢視,或者直接開啟py_compile.py,compileall.py檔案來看。

**自:

Python反編譯 pyc檔案反編譯

最近一直在研究python反編譯的問題,以前的decompyle只支援到2.2就不再公升級了,而且國內的depython 也不知道怎麼回事,上面說是支援2.4 2.5,但是每次我提交後,返回的內容都是空的。在網上找了乙個專案,自己改了很長時間,總算有點起色了,大部分的2.5特性都是支援的,只是2.5...

Python編譯 執行 反編譯pyc檔案

單個檔案 import py compile py compile.compile test.py 命令列下 python m py compile test.py 多個檔案 import compileall compileall.compile dir 存放海量py的目錄 命令列下 python...

pyc檔案反編譯

找乙個pyc檔案 不是源 檔案 然後搜尋相關反編譯工具把pyc反編譯成python源 最好能多找幾種工具或者途徑達到反編譯的目的。2 easy python decompiler反編譯工具 但是他的 可能用的是最新的python環境,easy python decompiler目前只支援帶pytho...