python打包exe文件并隱藏執(zhí)行CMD命令窗口問(wèn)題
python打包exe文件并隱藏執(zhí)行CMD命令窗口
虛擬環(huán)境安裝 pyinstaller
pip install pyinstaller?
打包exe命令:(具體的命令網(wǎng)上資料很多)
# 打包1個(gè)py文件,并隱藏執(zhí)行窗口 pyinstaller -F -w main.py? ? # 打包1個(gè)py文件(-F),并隱藏執(zhí)行窗口(-w),替換exe的ico圖標(biāo)(-i img.ico) pyinstaller -F -w -i img.ico ?main.py?
以上的這種打包方式會(huì)將各種依賴庫(kù)都以源文件方式保存到文件夾中,大部分時(shí)候我們還是希望只有一個(gè)exe文件
將文件夾中所有依賴庫(kù)都打包進(jìn)exe內(nèi):
# 合并到一個(gè)exe內(nèi)(--onefile),替換exe圖標(biāo)(--icon=img.ico),py源文件(main.py),隱藏執(zhí)行(-w) pyinstaller --onefile --icon=img.ico ?main.py -w
注意:當(dāng)把所有依賴庫(kù)都打包進(jìn)一個(gè)exe以后,且以隱藏CMD窗口方式執(zhí)行時(shí)會(huì)出現(xiàn)錯(cuò)誤,導(dǎo)致程序無(wú)法正常運(yùn)行,所以需要用到
subprocess來(lái)執(zhí)行CMD命令。這種方式來(lái)執(zhí)行cmd命令就不會(huì)出現(xiàn)程序錯(cuò)誤。
import subprocess ? cmd = '你的CMD命令' res = subprocess.call(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)?
Python打包exe程序避坑指南:沒(méi)有安裝包也能運(yùn)行小程序
首先
在cmd里安裝pyintsaller包。
首先將安裝轉(zhuǎn)換工具—pyinstaller:需要打開(kāi)cmd,然后在cmd里輸入一行命令即可。
pip install pyinstaller
如果覺(jué)得安裝太慢,還可以加入國(guó)內(nèi)鏡像下載:【我比較習(xí)慣用豆瓣的】。
pip install -i https://pypi.douban.com/simple/ pyinstaller
常用源鏡像:
1.清華:https://pypi.tuna.tsinghua.edu.cn/simple
2.阿里云:http://mirrors.aliyun.com/pypi/simple/
3.中國(guó)科技大學(xué) https://pypi.mirrors.ustc.edu.cn/simple/
4.華中理工大學(xué):http://pypi.hustunique.com/
5.山東理工大學(xué):http://pypi.sdutlinux.org/
6.豆瓣:http://pypi.douban.com/simple/
在cmd里輸入打包成exe的命令。
然后在cmd里跳轉(zhuǎn)地址到Python代碼所在的文件地址,然后輸入以下命令,即可將Python代碼轉(zhuǎn)成
exe,并生成一個(gè)名為dist的文件夾,在文件夾中可以找到剛打包完成的exe。
pyinstaller -F xxxx.py(要打包的py文件) pyinstaller -D xxxx.py(要打包的py文件)
功能注釋?zhuān)?/p>
功能 | 注釋 |
---|---|
-F | 打包成一個(gè)文件 |
-D | 打包成一個(gè)文件夾 |
-n | 重新命名 |
--noconsole | 去掉cmd命令窗口 |
-i | 加入圖標(biāo),圖標(biāo)需要是ico格式 |
打包舉例:
1.打包時(shí)候修改文件名
2.運(yùn)行時(shí)候不顯示命令窗口
3.改變游戲圖標(biāo)
pyinstaller -F -i label.ico main.py -n 掃雷小游戲 --noconsole
如果有問(wèn)題看下面
(1)一閃而過(guò)怎么辦?
原因:打包的源碼或環(huán)境有問(wèn)題。
解決辦法:打包成有命令窗口的exe,并將exe在cmd里運(yùn)行,運(yùn)行不成功會(huì)顯示報(bào)錯(cuò)信息,然后根據(jù)報(bào)錯(cuò)信息修改。
(2)打包后的文件太大怎么辦?
原因:在python導(dǎo)包的時(shí)候,將包的全部函數(shù)打包成exe了。
解決辦法:這里需要在代碼里更改導(dǎo)包方式,例如將import sys改為from sys import exit。
(3)缺少相關(guān)素材。
將代碼里所有涉及到素材的文件都改成絕對(duì)路徑(針對(duì)本臺(tái)電腦)。
將相關(guān)素材的路徑換成相對(duì)路徑,并將所有素材和exe放到一個(gè)文件夾下(針對(duì)移植exe)。
(4)關(guān)于圖標(biāo)的ico文件去哪里轉(zhuǎn)?
在這個(gè)網(wǎng)址可以將圖片轉(zhuǎn)成ico圖標(biāo) http://www.bitbug.net/
(5) 圖標(biāo)加載進(jìn)去不顯示怎么辦?
刷新界面或者將exe文件復(fù)制粘貼到其它路徑下就能看到。
(6)pyintsaller --help。
關(guān)于pyinstaller功能最最最全面的解釋?zhuān)梢栽赾md里直接使用命令得到:
pyinstaller --help
好啦!打包完成之后發(fā)給你想發(fā)的對(duì)象吧~無(wú)需python也能直接運(yùn)行小程序!趕緊把小程序打包給
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
深入解析Python?3中Hash鍵值存儲(chǔ)的優(yōu)勢(shì)與應(yīng)用
這篇文章主要介紹了深入解析Python?3中Hash鍵值存儲(chǔ)的優(yōu)勢(shì)與應(yīng)用的相關(guān)資料,需要的朋友可以參考下2023-11-11如何解決django-celery啟動(dòng)后迅速關(guān)閉
在本篇文章里小編給大家整理的是關(guān)于django-celery啟動(dòng)后迅速關(guān)閉的解決方法,有需要的朋友們學(xué)習(xí)下。2019-10-10使用Python創(chuàng)建一個(gè)簡(jiǎn)單的任務(wù)管理器應(yīng)用程序
本文主要介紹了使用Python創(chuàng)建一個(gè)簡(jiǎn)單的任務(wù)管理器應(yīng)用程序,這個(gè)應(yīng)用程序?qū)⒃试S用戶添加、編輯、刪除和完成任務(wù),具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05Python OpenCV高斯金字塔與拉普拉斯金字塔的實(shí)現(xiàn)
這篇文章主要介紹了Python OpenCV高斯金字塔與拉普拉斯金字塔的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Python標(biāo)準(zhǔn)庫(kù)之itertools庫(kù)的使用方法
Python提供了一個(gè)非常棒的模塊用于創(chuàng)建自定義的迭代器,這個(gè)模塊就是 itertools。itertools 提供的工具相當(dāng)高效且節(jié)省內(nèi)存,下面這篇文章主要給大家介紹了關(guān)于Python標(biāo)準(zhǔn)庫(kù)之itertools庫(kù)使用的相關(guān)資料,需要的朋友可以參考下。2017-09-09python自動(dòng)化測(cè)試selenium核心技術(shù)三種等待方式詳解
這篇文章主要為大家介紹了python自動(dòng)化測(cè)試selenium的核心技術(shù)三種等待方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-11-11