網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
目的描述:
為了讓沒(méi)有安裝Python的人也能使用我們編寫(xiě)的.py文件,我們需要將編寫(xiě)好的Python程序生成.exe文件。
第一步 下載pyinstaller
pyinstaller插件是Python自帶的插件,用于為我們寫(xiě)好的代碼進(jìn)行打包,最終自動(dòng)合成.exe文件。
在Pycharm界面的最下面,你可以看到Terminal,選擇這個(gè)選項(xiàng),這就是一個(gè)終端界面。
在此界面寫(xiě)輸入指令: pip install pyinstaller 對(duì)pyinstaller進(jìn)行下載。
在下載過(guò)程中,可能會(huì)遇到一些錯(cuò)誤提示,解決方案可以參考我的另外幾篇博客:
常見(jiàn)錯(cuò)誤提示一:
You are using pip version 10.0.1, however version 20.0.2 is available.
You should consider upgrading via the ‘python -m pip install --upgrade pip’ command.
常見(jiàn)錯(cuò)誤提示二:
NoneType’ object has no attribute 'bytes
第二步 使用pyinstaller
在終端里輸入的指令為: pyinstaller -w -F XXX.py
但是對(duì)于初學(xué)者來(lái)說(shuō),這里要解釋的東西很多:
-w:表示希望在生成的.exe程序運(yùn)行過(guò)程中,不要出現(xiàn)cmd黑框(就是圖中的黑框)(注意:小寫(xiě)!)
-F:表示希望將所有的程序全部打包在一起,生成的只有一個(gè).exe文件,這樣的文件集成度高,但是運(yùn)行速度慢;如果不寫(xiě)-F,生成的還有一堆.dll文件,這樣的程序里文件很多,但是運(yùn)行速度比較快,這也是我們平時(shí)使用的程序的樣式(如圖)(注意:大寫(xiě)!)
XXX.py:指的是你整個(gè)項(xiàng)目的入口程序,大家寫(xiě)項(xiàng)目時(shí)很可能是多文件編程,你整個(gè)項(xiàng)目時(shí)靠哪個(gè)文件作為入口拉起來(lái)的,就填那個(gè)文件的名字。
常見(jiàn)錯(cuò)誤:
ValueError: script ‘C:\Users\Administrator.XXX.py’ not found
找不到XXX.py這個(gè)程序
解決方案:
pyinstaller找文件的方法是看你建立的那個(gè)工程文件夾里有沒(méi)有你寫(xiě)進(jìn)去的文件,而不是看子文件夾里有沒(méi)有。如果您是在子文件夾中寫(xiě)程序,可以把你寫(xiě)的所有程序都拷貝到工程文件夾中。
如果你在代碼中導(dǎo)入了圖片、文檔等與路徑相關(guān)的文件,注意修改路徑。
第三步: 找到生成的.exe文件
有不少同學(xué)都反映,沒(méi)有看到生成的.exe文件。
沒(méi)看見(jiàn)就對(duì)了,因?yàn)?exe文件根本不在工程文件夾下面。運(yùn)行pyinstaller -w -F XXX.py指令后,會(huì)生成兩個(gè)文件夾:一個(gè)叫build,另一個(gè)叫dist。
點(diǎn)開(kāi)dist文件夾,里面會(huì)有一個(gè)用你填進(jìn)去的XXX命名的文件夾,再點(diǎn)進(jìn)去,你就會(huì)看到XXX.exe文件。
理論上你已經(jīng)生成了.exe可執(zhí)行文件,這樣就完成了。如果你的.exe文件可以運(yùn)行起來(lái),那么恭喜你!但是實(shí)施情況是,這個(gè).exe文件運(yùn)行起來(lái)很有可能會(huì)有各種各樣奇葩的問(wèn)題:比如閃退、雙擊后直接消失了、程序莫名其妙地崩掉等。
總結(jié)
如果遇到這些問(wèn)題,大家千萬(wàn)不要慌張,因?yàn)檫@是很多人都會(huì)遇到的,網(wǎng)上也有很多人問(wèn)這樣的問(wèn)題,我在這里只是給大家提個(gè)醒,讓大家有個(gè)心理準(zhǔn)備。不要覺(jué)得自己勝利在望,結(jié)果被悶頭一棒。解決這些問(wèn)題我也花了很長(zhǎng)時(shí)間,之后我再專(zhuān)門(mén)寫(xiě)一篇博客來(lái)告訴大家如何解決這些問(wèn)題的,敬請(qǐng)期待。
原文鏈接:https://blog.csdn.net/Nire_Yeyu/article/details/10468388
相關(guān)推薦
- 2022-07-30 C語(yǔ)言強(qiáng)制類(lèi)型轉(zhuǎn)換規(guī)則實(shí)例詳解_C 語(yǔ)言
- 2022-10-27 golang?map的基本操作及定義方式_Golang
- 2022-04-08 深入理解Golang的反射reflect示例_Golang
- 2024-04-23 Win11右下角時(shí)間怎么顯示星期幾?
- 2022-07-08 Qt5?串口類(lèi)QSerialPort的實(shí)現(xiàn)_C 語(yǔ)言
- 2022-07-12 Springboot Druid 啟動(dòng)報(bào)錯(cuò):Failed to configure a DataSo
- 2022-06-28 python神經(jīng)網(wǎng)絡(luò)使用Keras構(gòu)建RNN訓(xùn)練_python
- 2023-02-07 Redis?中ZSET數(shù)據(jù)類(lèi)型命令使用及對(duì)應(yīng)場(chǎng)景總結(jié)(案例詳解)_Redis
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支