python archive_viewer.py 百年好合.exe
- 教育綜合
- 2022-10-30 12:58:39
怎么把 python 打包成 exe 可執(zhí)行文件
PyInstaller 安裝pyinstaller 對于那些網(wǎng)絡(luò)比較穩(wěn)定,能夠流暢使用pip源地址的用戶,直接下面的命令就可以搞定: pip install pyinstaller 通常我們會(huì)下載源碼包,然后進(jìn)入包目錄,執(zhí)行下面的命令(需要安裝setuptools): python setup.py install 安裝完后,檢查安裝成功與否: pyinstaller --version 安裝成功后,就可以使用下面的命令了: pyinstaller : 打包可執(zhí)行文件的主要命令,詳細(xì)用法下面會(huì)介紹。 pyi-archive_viewer : 查看可執(zhí)行包里面的文件列表。 pyi-bindepe如何把PyCharm改造成支持科學(xué)計(jì)算的Python IDE
進(jìn)入PyCharm的Preference, 點(diǎn)擊Colose,確保右側(cè)的“Use IPython If Available”處于選中狀態(tài)。 在菜單欄中,點(diǎn)擊 Tools –>> Python Console, 看PyCharm是否已經(jīng)成功調(diào)用ipython。如果不能,可能需要重啟系統(tǒng),或者重新安裝ipython。 PyCharm 自帶的運(yùn)行/調(diào)試功能每次都會(huì)在新的進(jìn)程中執(zhí)行,和科學(xué)計(jì)算、機(jī)器學(xué)習(xí)的調(diào)試模式不一致。一旦數(shù)據(jù)量稍大,就得每次載入數(shù)據(jù),浪費(fèi)寶貴的時(shí)間。這里我們利用PyCharm的宏來解決。 首先,隨便新建一個(gè)腳本,寫好if __name__ == "__main__":函數(shù),然后單擊python 從run對話框運(yùn)行*.bat為什么一閃
本文重點(diǎn)介紹如何在Abaqus中執(zhí)行Python腳本。如果腳本中包含ABAQUS/CAE無法訪問的某些功能,則需要在Abaqus命令行接口中輸入命令,Abaqus將借助Python解釋器來運(yùn)行腳本。如果ABAQUS/CAE的任意模塊都能夠訪問腳本的語句,則由ABAQUS/CAE的內(nèi)核來解釋執(zhí)行腳本。 (1)從Abaqus Command啟動(dòng)ABAQUS/CAE(Viewer)同時(shí)運(yùn)行腳本 在Abaqus Command中輸入下列命令,可以啟動(dòng)ABAQUS/CAE(Viewer)同時(shí)并運(yùn)行腳本: # 啟動(dòng)CAE abaqus cae script=myscript.py abaqus cae spython怎么生成可執(zhí)行文件
Python是一個(gè)腳本語言,被解釋器解釋執(zhí)行。它的發(fā)布方式:
.py文件:對于開源項(xiàng)目或者源碼沒那么重要的,直接提供源碼,需要使用者自行安裝Python并且安裝依賴的各種庫。(Python官方的各種安裝包就是這樣做的)
.pyc文件:有些公司或個(gè)人因?yàn)闄C(jī)密或者各種原因,不愿意源碼被運(yùn)行者看到,可以使用pyc文件發(fā)布,pyc文件是Python解釋器可以識別的二進(jìn)制碼,故發(fā)布后也是跨平臺的,需要使用者安裝相應(yīng)版本的Python和依賴庫。
可執(zhí)行文件:對于非碼農(nóng)用戶或者一些小白用戶,你讓他裝個(gè)Python同時(shí)還要折騰一堆依賴庫,那簡直是個(gè)災(zāi)難。對于此類用戶,最簡單的方式就是提供一個(gè)可執(zhí)行文件,只需要把用法告訴Ta即可。比較麻煩的是需要針對不同平臺需要打包不同的可執(zhí)行文件(Windows,Linux,Mac,...)。
- pip install pyinstaller
- python setup.py install
- pyinstaller --version
pyinstaller: 打包可執(zhí)行文件的主要命令,詳細(xì)用法下面會(huì)介紹。
pyi-archive_viewer: 查看可執(zhí)行包里面的文件列表。
pyi-bindepend: 查看可執(zhí)行文件依賴的動(dòng)態(tài)庫(.so或.dll文件)
pyi-...: 等等。
- pyinstaller [options] script [script ...] | specfile
- pyinstaller mycript.py
- pyinstaller -F mycript.py
- pyi-makespec options script [script ...]
- pyinstaller specfile pyi-build specfile
本文主要就是介紹最后一種方式,.py和.pyc都比較簡單,Python本身就可以搞定。將Python腳本打包成可執(zhí)行文件有多種方式,本文重點(diǎn)介紹PyInstaller,其它僅作比較和參考。
Freezing Your Code
各種打包工具的對比如下(來自文章Freezing Your Code):
Solution
Windows
Linux
OS X
Python 3
License
One-file mode
Zipfile import
Eggs
pkg_resources support
bbFreeze yes yes yes no MIT no yes yes yes
py2exe yes no no yes MIT yes yes no no
pyInstaller yes yes yes no GPL yes no yes no
cx_Freeze yes yes yes yes PSF no yes yes no
py2app no no yes yes MIT no yes yes yes
PS.其中pyInstaller和cx_Freeze都是不錯(cuò)的,stackoverflow上也有人建議用cx_Freeze,說是更便捷些。pkg_resources新版的pyInstaller貌似是支持的。
安裝PyInstaller
對于那些網(wǎng)絡(luò)比較穩(wěn)定,能夠流暢使用pip源地址的用戶,直接下面的命令就可以搞定:
通常我們會(huì)下載源碼包,然后進(jìn)入包目錄,執(zhí)行下面的命令(需要安裝setuptools):
安裝完后,檢查安裝成功與否:
安裝成功后,就可以使用下面的命令了:
使用PyInstaller
pyinstaller的語法:
最簡單的用法,在和myscript.py同目錄下執(zhí)行命令:
然后會(huì)看到新增加了兩個(gè)目錄build和dist,dist下面的文件就是可以發(fā)布的可執(zhí)行文件,對于上面的命令你會(huì)發(fā)現(xiàn)dist目錄下面有一堆文件,各種都動(dòng)態(tài)庫文件和myscrip可執(zhí)行文件。有時(shí)這樣感覺比較麻煩,需要打包dist下面的所有東西才能發(fā)布,萬一丟掉一個(gè)動(dòng)態(tài)庫就無法運(yùn)行了,好在pyInstaller支持單文件模式,只需要執(zhí)行:
你會(huì)發(fā)現(xiàn)dist下面只有一個(gè)可執(zhí)行文件,這個(gè)單文件就可以發(fā)布了,可以運(yùn)行在你正在使用的操作系統(tǒng)類似的系統(tǒng)的下面。
當(dāng)然,pyinstaller還有各種選項(xiàng),有通用選項(xiàng),如-d選項(xiàng)用于debug,了解pyInstaller執(zhí)行的過程;還有一些針對不同平臺的選項(xiàng),具體用法可以訪問PyInstaller官方WIKI。
在執(zhí)行pyInstaller命令的時(shí)候,會(huì)在和腳本相同目錄下,生成一個(gè).spec文件,該文件會(huì)告訴pyinstaller如何處理你的所有腳本,同時(shí)包含了命令選項(xiàng)。一般我們不用去理會(huì)這個(gè)文件,若需要打包數(shù)據(jù)文件,或者給打包的二進(jìn)制增加一些Python的運(yùn)行時(shí)選項(xiàng)時(shí)...一些高級打包選項(xiàng)時(shí),需要手動(dòng)編輯.spec文件??梢允褂茫?/p>
創(chuàng)建一個(gè).spec文件,對于手動(dòng)編輯的.spec文件,我們可以使用下面任意一條命令:
PyInstaller的原理簡介
PyInstaller其實(shí)就是把python解析器和你自己的腳本打包成一個(gè)可執(zhí)行的文件,和編譯成真正的機(jī)器碼完全是兩回事,所以千萬不要指望成打包成一個(gè)可執(zhí)行文件會(huì)提高運(yùn)行效率,相反可能會(huì)降低運(yùn)行效率,好處就是在運(yùn)行者的機(jī)器上不用安裝python和你的腳本依賴的庫。在Linux操作系統(tǒng)下,它主要用的binutil工具包里面的ldd和objdump命令。
PyInstaller輸入你指定的的腳本,首先分析腳本所依賴的其他腳本,然后去查找,復(fù)制,把所有相關(guān)的腳本收集起來,包括Python解析器,然后把這些文件放在一個(gè)目錄下,或者打包進(jìn)一個(gè)可執(zhí)行文件里面。
可以直接發(fā)布輸出的整個(gè)文件夾里面的文件,或者生成的可執(zhí)行文件。你只需要告訴用戶,你的應(yīng)用App是自我包含的,不需要安裝其他包,或某個(gè)版本的Python,就可以直接運(yùn)行了。
需要注意的是,PyInstaller打包的執(zhí)行文件,只能在和打包機(jī)器系統(tǒng)同樣的環(huán)境下。也就是說,不具備可移植性,若需要在不同系統(tǒng)上運(yùn)行,就必須針對該平臺進(jìn)行打包。
參考資料