python打包exe文件并隱藏執(zhí)行CMD命令窗口問題
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程序避坑指南:沒有安裝包也能運(yùn)行小程序
首先
在cmd里安裝pyintsaller包。
首先將安裝轉(zhuǎn)換工具—pyinstaller:需要打開cmd,然后在cmd里輸入一行命令即可。
pip install pyinstaller
如果覺得安裝太慢,還可以加入國(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文件)
功能注釋:
| 功能 | 注釋 |
|---|---|
| -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
如果有問題看下面
(1)一閃而過怎么辦?
原因:打包的源碼或環(huá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功能最最最全面的解釋,可以在cmd里直接使用命令得到:
pyinstaller --help
好啦!打包完成之后發(fā)給你想發(fā)的對(duì)象吧~無(wú)需python也能直接運(yùn)行小程序!趕緊把小程序打包給
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 實(shí)現(xiàn)鏈表實(shí)例代碼
這篇文章主要介紹了Python 實(shí)現(xiàn)鏈表實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04
python如何求取指定范圍內(nèi)的質(zhì)數(shù)
這篇文章主要介紹了python如何求取指定范圍內(nèi)的質(zhì)數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
pytorch神經(jīng)網(wǎng)絡(luò)之卷積層與全連接層參數(shù)的設(shè)置方法
今天小編就為大家分享一篇pytorch神經(jīng)網(wǎng)絡(luò)之卷積層與全連接層參數(shù)的設(shè)置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-08-08
python實(shí)現(xiàn)簡(jiǎn)易數(shù)碼時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)易數(shù)碼時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
Python實(shí)現(xiàn)計(jì)算兩個(gè)時(shí)間之間相差天數(shù)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)計(jì)算兩個(gè)時(shí)間之間相差天數(shù)的方法,涉及Python針對(duì)日期時(shí)間的相關(guān)運(yùn)算操作技巧,需要的朋友可以參考下2017-05-05
從源碼解析Python的Flask框架中request對(duì)象的用法
Flask中的request對(duì)象發(fā)送請(qǐng)求使用起來(lái)十分方便,但也有一些需要注意的地方,這里我們來(lái)從源碼解析Python的Flask框架中request對(duì)象的用法,需要的朋友可以參考下.2016-06-06
Django中在xadmin中集成DjangoUeditor過程詳解
這篇文章主要介紹了Django中在xadmin中集成DjangoUeditor過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
python 微信好友特征數(shù)據(jù)分析及可視化
這篇文章主要介紹了python 微信好友特征數(shù)據(jù)分析及可視化,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
python實(shí)現(xiàn)隨機(jī)調(diào)用一個(gè)瀏覽器打開網(wǎng)頁(yè)

