當前位置:首頁 » 編程軟體 » 如何編譯出pyc文件並使用

如何編譯出pyc文件並使用

發布時間: 2022-09-05 12:30:17

1. 怎樣運行.pyc文件

pyc是一種
二進制文件
,是由py文件經過編譯後,生成的文件,是一種byte
code,py文件變成pyc文件後,載入的速度有所提高,而且pyc是一種跨平台的
位元組碼
,是由python的虛擬機來執行的,這個是類似於JAVA或者.NET的專
虛擬機
的概念.pyc的內容,是跟python的版本屬相關的,不同版本編譯後的pyc文件是不同的,2.5編譯的pyc文件,2.4版本的python是無法執行的。

2. 如何手動編譯成pyc,可以直接執行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函數

3. python編譯

python的解釋特性是將py編譯為獨有的二進制編碼pyc文件,然後對pyc中的指令進行解釋執行,但是pyc的反編譯卻非常簡單,可直接反編譯為源碼,當需要將產品發布到外部環境的時候,源碼的保護尤為重要。

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

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

5. python怎麼編譯成pyc文件

如下命令:

python-mcompileallxxx.py

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

6. python如何編譯生成二進制文件

1、可以
2、當你編輯運行py文件後,就會生成對應文件名的pyc文件。
3、pyc是一種二進制文件,是由py文件經過編譯後,生成的文件,是一種byte code,py文件變成pyc文件後,載入的速度有所提高,而且pyc是一種跨平台的位元組碼,是由python的虛擬機來執行的,這個是類似於JAVA或者.NET的虛擬機的概念。pyc的內容,是跟python的版本相關的,不同版本編譯後的pyc文件是不同的。
總之,是可以的

7. pyc能編譯嗎

生成單個pyc文件
python就是個好東西,它提供了內置的類庫來實現把py文件編譯為pyc文件,這個模塊就是 py_compile 模塊。
使用方法非常簡單,如下所示,直接在idle中,就可以把一個py文件編譯為pyc文件了。(假設在windows環境下)

import py_compile
py_compile.compile(r'H:/game/test.py')

compile函數原型:
compile(file[, cfile[, dfile[, doraise]]])
file 表示需要編譯的py文件的路徑
cfile 表示編譯後的pyc文件名稱和路徑,默認為直接在file文件名後加c 或者 o,o表示優化的位元組碼
dfile 這個參數英文看不明白,請各位大大賜教。(鄙視下自己)原文:it is used as the name of the source file in error messages instead of file
doraise 可以是兩個值,True或者False,如果為True,則會引發一個PyCompileError,否則如果編譯文件出錯,則會有一個錯誤,默認顯示在sys.stderr中,而不會引發異常
(來自python2.5文檔)
批量生成pyc文件
一般來說,我們的工程都是在一個目錄下的,一般不會說僅僅編譯一個py文件而已,而是需要把整個文件夾下的py文件都編譯為pyc文件,python又為了我們提供了另一個模塊:compileall 。使用方法如下:

import compileall
compileall.compile_dir(r'H:/game')

這樣就把game目錄,以及其子目錄下的py文件編譯為pyc文件了。嘿嘿,夠方便吧。來看下compile_dir函數的說明:

compile_dir(dir[, maxlevels[, ddir[, force[, rx[, quiet]]]]])
dir 表示需要編譯的文件夾位置
maxlevels 表示需要遞歸編譯的子目錄的層數,默認是10層,即默認會把10層子目錄中的py文件編譯為pyc
ddir 英文沒明白,原文:it is used as the base path from which the filenames used in error messages will be generated。
force 如果為True,則會強制編譯為pyc,即使現在的pyc文件是最新的,還會強制編譯一次,pyc文件中包含有時間戳,python編譯器會根據時間來決定,是否需要重新生成一次pyc文件
rx 表示一個正則表達式,比如可以排除掉不想要的目錄,或者只有符合條件的目錄才進行編譯
quiet 如果為True,則編譯後,不會在標准輸出中,列印出信息
(來自python2.5文檔)
總結
通過上面的方法,可以方便的把py文件編譯為pyc文件了,從而可以實現部分的源碼隱藏,保證了python做商業化軟體時,保證了部分的安全性吧,繼續學習下,看怎麼修改opcode。

8. python怎麼打開pyc文件

關於PyCodeObject和pyc文件:在硬碟上看到的pyc文件,其實PyCodeObject才是Python編譯器真正編譯成的結果。當python程序運行時,編譯的結果是保存在位於內存中的PyCodeObject中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。當python程序第二次運行時,首先程序會在硬碟中尋找pyc文件,如果找到,則直接載入,否則就重復上面的過程。所以,我們可以說pyc文件其實是PyCodeObject的一種持久化保存方式。
你指的是編輯pyc還是導入pyc?
pyc是很難直接編輯的,最好是修改原來的py文件,再生產pyc。
導入pyc:假設你的源代碼文件是model.py,經過Python37解釋器運行後會自動生成modle.cpython-37.pyc。如果要在main.py中導入modle.cpython-37.pyc,需要把文件名中的cpython-37去掉,變成model.pyc,再放到main.py所在的文件夾里,在main.py中添加「import model」,即可導入model。

9. 如何編譯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函數

10. 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即可。

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

熱點內容
腳本中new 發布:2025-02-13 21:00:11 瀏覽:741
什麼配置的筆記本電腦能玩神武 發布:2025-02-13 20:54:40 瀏覽:178
挑選雲伺服器需要注意什麼 發布:2025-02-13 20:53:31 瀏覽:98
加密滴膠卡 發布:2025-02-13 20:30:48 瀏覽:275
javalogin 發布:2025-02-13 20:25:48 瀏覽:427
智聯招聘無法上傳照片 發布:2025-02-13 20:16:03 瀏覽:529
python元素替換list 發布:2025-02-13 20:03:48 瀏覽:773
windows系統賬戶名和密碼是多少 發布:2025-02-13 20:03:02 瀏覽:531
我的世界帶有商店伺服器好嗎 發布:2025-02-13 20:02:50 瀏覽:616
東莞加密軟體 發布:2025-02-13 20:02:05 瀏覽:870