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