當前位置:首頁 » 編程軟體 » python半編譯

python半編譯

發布時間: 2023-10-25 12:46:24

python代碼運行需要編譯

有人在討論 Python 代碼是編譯執行還是解釋執行?這個問題還可以換一種說法: Python 是編譯型語言還是解釋型語言?回答這個問題

前,我們先弄清楚什麼是編譯型語言,什麼是解釋型語言。

所謂編譯執行就是源代碼經過編譯器編譯處理,生成目標機器碼,就是機器能直接運行的二進制代碼,下次運行時無需重新編譯。不過它

是針對特定CPU體系的,這些目標代碼只能在特定平台執行,如果這個程序需要在另外一種 CPU 上面運行,這個代碼就必須重新編譯。

它不具備可移植性,但是執行速度快,C、C++這類語言屬於編譯型語言。

而解釋型語言是在代碼運行期間逐行翻譯成目標機器碼,下次執行時,還是需要逐行解釋,我們可以簡單認為 Java、Python 都是解釋型

語言。

編譯型相當於廚師直接做好一桌子菜,顧客來了直接開吃,而解釋型就像吃火鍋,廚師把菜洗好,顧客需要自己動手邊煮邊吃,效率上來

說解釋型語言自然比不過編譯型語言,當然也不是絕對了,像 JIT 的效率就很高

以上是對編譯型語言和解釋型語言的一個簡單粗暴的區分,但是 Python(這里主要是指CPython)並不是嚴格的解釋型語言,因為

Python 代碼在運行前,會先編譯(翻譯)成中間代碼,每個 .py 文件將被換轉成 .pyc 文件,.pyc 就是一種位元組碼文件,它是與平台無

關的中間代碼,不管你放在 Windows 還是 linux 平台都可以執行,運行時將由虛擬機逐行把位元組碼翻譯成目標代碼。

我們安裝Python 時候,會有一個 Python.exe 文件,它就是 Python 解釋器,你寫的每一行 Python 代碼都是由它負責執行,解釋器由

一個編譯器和一個虛擬機構成,編譯器負責將源代碼轉換成位元組碼文件,而虛擬機負責執行位元組碼,所以,解釋型語言其實也有編譯過

程,只不過這個編譯過程並不是直接生成目標代碼,而是中間代碼(位元組碼),然後再通過虛擬機來逐行解釋執行位元組碼。

總結

Python代碼首先會編程一個位元組碼文件,再由虛擬機逐行解釋,把每一行位元組碼代碼翻譯成目標指令給CPU執行。

推薦學習《Python教程》。

❷ Python命令行創建cocos2d-x項目,每次都要編譯半個小時,如何解決

編譯時間過長大約20年前就有解決方案,通常叫預編譯。你檢查一下編譯器的開關選項。

如果有預編譯緩存這樣類似的功能就打開。這樣以前編譯過的代碼,如果沒有變更就不用編譯了。 這樣可以大大提高編譯的速度。

如果它沒有這個功能。你檢查一下能不能自己控制編譯步驟。比如自己設置一個腳本,檢查如果已編譯的模塊就不再重復。最後只是鏈接一下就可以。

這樣速度就可以提高幾倍,也許10秒就編譯完成了。

❸ python如何編譯

1、說明

編譯python程序就是把python腳本轉換成操作系統中的可執行文件,一般使用pyinstaller來完成。

2、步驟

(1)安裝pyinstaller

使用pip install pyinstaller命令來安裝

(2)編譯腳本

python安裝目錄scriptpyinstaller 腳本文件名

(3)完成

執行腳本後就可以在腳本目錄生成dist目錄,目錄就有打包好的可執行文件

3、備注

pyinstaller參數

-w指令

直接發布的exe應用帶命令行調試窗口,在指令內加入-w命令可以屏蔽。

-F指令

注意指令區分大小寫。這里是大寫。使用-F指令可以把應用打包成一個獨立的exe文件,否則是一個帶各種dll和依賴文件的文件夾

-p指令

這個指令後面可以增加pyinstaller搜索模塊的路徑。因為應用打包涉及的模塊很多。這里可以自己添加路徑。不過經過筆者測試,site-packages目錄下都是可以被識別的,不需要再手動添加。

python學習網,大量的免費python視頻教程,歡迎在線學習!

❹ 如何編譯Python使之成為可執行程序

Python是一個強大的工具,可惜不是每個人的計算機裡面都有安裝。當您寫了一個好用的工具。要如何讓那些沒有安裝Python的人使用你的工具呢?
對於這樣一個需要standalone exectuable環境的需求,直到撰寫經驗為止,只看到兩個比較好用且有持續維護的套件。一個是py2exe。另外一個就是本經驗要介紹的PyInstaller。
1
PyInstaller安裝

2

最新版本:PyInstaller 2.0
3

直接「解壓縮」之後即可使用,解壓到您想讓他在的路徑即可
END

PyInstaller配置

1
事先寫好py程序
2

在命令行執行:python Makespec.py --console --onefile NotePad\notepad.py
報錯:Configfile is missing or unreadable. Please run Configure.py before building
3

在命令行執行:Configure.py
報錯:Python 2.6+ on Windows support needs pywin32,Please install http://sourceforge.net/projects/pywin32/
4

安裝最新版本的 pywin32-217.win32-py2.7.exe
END

PyInstaller使用

命令行中運行
目錄切換到PyInstaller的安裝目錄「E:\pyinstaller-1.5\pyinstaller-1.

在PyInstaller的安裝目錄下新建一個文件夾(比如NotePad), 然後將要轉換的py腳本放到文件夾里(notepad.py)
E:\pyinstaller-1.5\pyinstaller-1.5>python Makespec.py --console --onefile NotePad\notepad.py

E:\pyinstaller-1.5\pyinstaller-1.5>python Build.py NotePad\notepad.spec

驗證exeE:\pyinstaller-1.5\pyinstaller-1.5>

E:\pyinstaller-1.5\pyinstaller-1.5\NotePad\dist\notepad.exe 0 0 100(成功)

查看生成的文件,生成的中間文件spec
查看生成的文件,生成的最終文件exe

END

注意事項

在轉換之前要確保py程序可以正常通過
如果轉換過程中出現什麼錯誤,用搜索引擎搜索解決一下

❺ 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是編譯型語言還是解釋型語言

Python是一種面向對象、解釋型、動態類型計算機程序設計語言
解釋型:程序無需編譯成二進制代碼,而是在執行時對語句一條一條編譯
動態類型:在程序執行過程中,可以改變變數的類型
它常被昵稱為膠水語言,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕松地聯結在一起

❼ python是編譯器還是解釋器

其實Python和Java/C#一樣,也是一門基於虛擬機的語言
Python是編譯+解釋型的語言,執行的時候是由Python解釋器,逐行編譯+解釋,然後運行,因為在運行的過程中,需要編譯+解釋,所以Python的運行性能會低於編譯型語言,比如C++。為了提高性能,Python解釋器,會將模塊(以後要重用的腳本文件放在模塊里)的編譯+解釋的結果,保存在.pyc中。這樣下次執行的時候,就省了編譯這個環節。提高性能。一次性的腳本文件,解釋器是不會保存編譯+解釋的結果,也就是沒有.pyc文件。
希望這個回答可以幫助到你。

熱點內容
雪鐵龍凡爾賽選哪個配置 發布:2024-05-06 06:56:04 瀏覽:570
福睿斯配置怎麼樣 發布:2024-05-06 06:50:16 瀏覽:102
微生物資料庫 發布:2024-05-06 06:47:33 瀏覽:604
原神和steam游戲哪個需要配置 發布:2024-05-06 06:37:40 瀏覽:665
nginx訪問403 發布:2024-05-06 05:56:39 瀏覽:677
android上傳圖片參數 發布:2024-05-06 05:56:04 瀏覽:221
360控制上傳流量 發布:2024-05-06 05:38:11 瀏覽:999
幾代演算法 發布:2024-05-06 05:33:43 瀏覽:353
安卓怎麼查看iculd照片 發布:2024-05-06 05:18:24 瀏覽:91
shell腳本減法 發布:2024-05-06 05:18:22 瀏覽:353