將Python文件打包成.EXE可執(zhí)行文件的方法
利用Python寫了一個(gè)小腳本想要傳給使用Windows但沒有裝Python的朋友執(zhí)行,這時(shí)候就可以利用將檔案包裝成exe檔案,讓沒有Python的朋友也可以執(zhí)行。本篇將介紹利用套件「PyInstaller」制作exe檔。
1|0安裝方法
#安裝pyinstaller pip install pyinstaller #安裝依賴 pip install pywin32-ctypes
2|0常用參數(shù)介紹
pyinstaller -h來(lái)查看參數(shù)
-F打包成一個(gè)exe文件
-i圖標(biāo)路徑
-w使用視窗,無(wú)控制臺(tái)
-c使用控制臺(tái),無(wú)視窗
-D創(chuàng)建一個(gè)目錄,包含exe以及其他一些依賴性文件
編譯文件時(shí),我們通常使用如下命令:
pyinstaller -F -w -i favo.ico main.py
3|0靜態(tài)文件
對(duì)于python所依賴的圖片,config.yaml等靜態(tài)文件,pyinstall不會(huì)自動(dòng)打包,需要手動(dòng)在main.py(所需要打包的入口文件)的相同目錄中尋找main.spec,修改datas依賴,才可以自動(dòng)打包到exe的相同目錄下,然后執(zhí)行即可
datas是一個(gè)數(shù)組,每個(gè)子項(xiàng)是一個(gè)tuple,其中tuple的第一個(gè)參數(shù)是你要打包的源路徑,第二個(gè)參數(shù)是打包后的名字
# -*- mode: python -*- block_cipher = None a = Analysis(['ui.py'], pathex=['C:\\Users\\user\\Desktop\\resilio\\toyou\\code\\zeus_board_test'], binaries=[], datas=[('C:\\Users\\user\\Desktop\\resilio\\toyou\\code\\zeus_board_test\\images','images'),('C:\\Users\\user\\Desktop\\resilio\\toyou\\code\\zeus_board_test\\question.yaml','question.yaml')], hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False)
然后執(zhí)行:
pyinstaller -F main.spec
4|0示例
如下圖所示,我們編寫一個(gè)輸出helow pyinstaller的Python程序,并利用input()使程序可以暫時(shí)停在輸出畫面。
print('helow pyinstaller') input('please wait:')
編譯python為exe,編譯過(guò)程中會(huì)自動(dòng)安裝相關(guān)依賴
pyinstaller -F hello.py
編譯過(guò)程中會(huì)產(chǎn)生如下輸出:
… 6942 INFO: checking PY 6944 INFO: Building because toc changed 6944 INFO: Building PYZ(ZlibArchive)C:\Users\user\Desktop\test\build\test\PYZ-00.pyz 7559 INFO: Building PYZ(ZlibArchive)C:\Users\user\Desktop\test\build\test\PYZ-00.pyz completed successfully. 7568 INFO: checking PKG 7569 INFO: Building because toc changed 7569 INFO: Building PKG(CArchive)PKG-00.pkg 9407 INFO: Building PKG(CArchive)PKG-00.pkg completed successfully. 9409 INFO: Bootloader c:\users\user\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\bootloader\Windows-64bit\run.exe9409 INFO: checking EXE 9411 INFO: Building because toc changed 9411 INFO: Building EXE from EXE-00.toc 9412 INFO: Appending archive to EXE C:\Users\user\Desktop\test\dist\test.exe 9455 INFO: Building EXE from EXE-00.toc completed successfully.
通過(guò)輸出可以看出pyinstaller進(jìn)行了如下操作:
會(huì)先建立一個(gè)hello.spec
建立「build」文件夾
建立log紀(jì)錄檔與工作檔案于文件夾build中
建立「dist」文件夾
建立執(zhí)行檔(.exe)在「dist」文件夾
4|1注意事項(xiàng)
執(zhí)行檔案可在win8/win10,64位的電腦運(yùn)行,但win7 x64和其余所有32位失敗,會(huì)提示不兼容,若要能32位與64位皆可運(yùn)行,就要在Python 32位的環(huán)境下編譯PyInstaller打包exe,才能在32位與64位成功。
相關(guān)文章
對(duì)python xlrd讀取datetime類型數(shù)據(jù)的方法詳解
今天小編就為大家分享一篇對(duì)python xlrd讀取datetime類型數(shù)據(jù)的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Python異步編程入門之實(shí)現(xiàn)文件批處理的并發(fā)處理方式
本文以Python初級(jí)程序員為對(duì)象,介紹了如何使用asyncio和logging模塊實(shí)現(xiàn)一個(gè)異步批處理文件的并發(fā)處理系統(tǒng),以提高處理大量文件或數(shù)據(jù)時(shí)的效率,其中,通過(guò)配置日志系統(tǒng)記錄處理文件的日志信息,定義AsyncBatchProcessor類控制并發(fā)任務(wù)的數(shù)量2024-10-10Python代碼使用 Pyftpdlib實(shí)現(xiàn)FTP服務(wù)器功能
FTP 服務(wù)器,在此之前我都是使用Linux的vsftpd軟件包來(lái)搭建FTP服務(wù)器的,現(xiàn)在發(fā)現(xiàn)了利用pyftpdlib可以更加簡(jiǎn)單的方法即可實(shí)現(xiàn)FTP服務(wù)器的功能 ,需要的朋友可以參考下2019-07-07Python學(xué)習(xí)之字符串常用方法總結(jié)
這篇文章主要為大家介紹了Python中字符串的幾個(gè)常用方法總結(jié),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python字符串有一定幫助,需要的可以參考一下2022-03-03Python關(guān)于版本升級(jí)與包的維護(hù)方式
這篇文章主要介紹了Python關(guān)于版本升級(jí)與包的維護(hù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06django表單中的按鈕獲取數(shù)據(jù)的實(shí)例分析
在本篇文章里小編給大家詳解了關(guān)于django表單中的按鈕獲取數(shù)據(jù)的內(nèi)容,需要的朋友們可以參考下。2020-07-07python中如何實(shí)現(xiàn)徑向基核函數(shù)
這篇文章主要介紹了python中如何實(shí)現(xiàn)徑向基核函數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02

Flask??請(qǐng)求鉤子的實(shí)現(xiàn)