一、實(shí)驗(yàn)環(huán)境
1.Windows7x64_SP1
2.anaconda2.5.0 + python2.7(anaconda集成,不需單獨(dú)安裝)
3.pyinstaller3.0
二、問題描述
1.使用如上環(huán)境,pyinstaller打包生成的exe文件,存放在本地,如果路徑中包含中文,程序無法運(yùn)行;exe程序如果使用中文命名,程序同樣無法運(yùn)行。
三、解決方式
1.查看pyinstaller網(wǎng)站
https://pypi.org/project/PyInstaller/
2.有如下描述

3.更換實(shí)驗(yàn)環(huán)境
1.Windows7x64_SP1
2.anaconda3.7 + python3.7(anaconda集成,不需單獨(dú)安裝)
3.pyinstaller3.5 #使用pyinstaller3.0,打包時(shí)報(bào)錯(cuò)
4.打包exe程序,存放路徑包含中文,exe程序可以正常運(yùn)行
補(bǔ)充:pyinstaller的使用和幾個(gè)坑
pyinstaller是一個(gè)非常簡單的打包python的py文件的庫。用起來就幾條命令就夠了
直接pip install pyinstaller 會(huì)下載到最新版的 3.3的pyinstaller,和之前版本的語法是不同的,這個(gè)版本直接cmd里輸入
pyinstaller X:\XXX\XXX.py 就可以了 生成的文件就在c盤user\用戶名\dist 下,而用戶名文件下還有個(gè)buld里面存放了她運(yùn)行的中間文件,里面有個(gè)warn文件詳細(xì)記錄了打包的錯(cuò)誤,雖然沒什么卵用,但至少可以拿來百度下騙騙自己。。。哈哈
另外說幾個(gè)非常重要的問題
1.命令使用pyinstaller和pyinstaller.exe結(jié)果都是一樣的
2.-w是不顯示命令窗口, -i 圖標(biāo)文件的路徑 這是改變圖標(biāo)的,但是我發(fā)現(xiàn)只能改變?nèi)蝿?wù)欄里的和命令窗口的圖標(biāo),并不能改變exe文件的圖標(biāo)。另外這些參數(shù)要加載pyinstaller和路徑中間。
3.有一些代碼需要調(diào)用一些圖片和資源文件的,這是不會(huì)自動(dòng)導(dǎo)入的,需要你自己手動(dòng)復(fù)制進(jìn)去才行。不然exe文件運(yùn)行時(shí)命令窗口會(huì)報(bào)錯(cuò)找不到這個(gè)文件。
4.也是最坑的一點(diǎn)。就是當(dāng)你使用錯(cuò)誤的參數(shù)去打包或者打包到一半中斷,等等此類運(yùn)行到一半沒了的情況。會(huì)導(dǎo)致你原來的py文件變成一個(gè)0KB的空文件。里面的代碼會(huì)全部消失!!!所以以后需要有個(gè)良好的習(xí)慣,就是復(fù)制一份代碼出來,用這個(gè)副本進(jìn)行打包。并且參數(shù)出錯(cuò),或者打錯(cuò)了導(dǎo)致失敗時(shí),檢查下副本文件的py文件是否還存在再繼續(xù)重新打包,不然打出來的就是空的文件,自然一直閃退,因?yàn)閴焊鶝]內(nèi)容。
5.寫代碼的時(shí)候應(yīng)當(dāng)有個(gè)良好的習(xí)慣,用什么函數(shù)導(dǎo)什么函數(shù),不要上來import整個(gè)庫,最后你會(huì)發(fā)現(xiàn)你一個(gè)100KB的代碼打包出來有500MB,全是庫,簡直無語
6.pygame代碼調(diào)試的時(shí)候要用quit()不然程序結(jié)束時(shí)會(huì)崩潰。但是直接運(yùn)行py文件就不需要這個(gè)函數(shù)。這個(gè)我們之前的文章也提到過了。但是這里當(dāng)我使用-w做成無窗口的程序后,一結(jié)束發(fā)現(xiàn)報(bào)錯(cuò),暫停后發(fā)現(xiàn)報(bào)的是找不到quit()函數(shù)。可見這個(gè)函數(shù)其實(shí)是一個(gè)很讓人無語的函數(shù)。一方面pygame官方網(wǎng)上說結(jié)束程序的時(shí)候需要加入這個(gè)函數(shù)。另一方面其實(shí)在正在運(yùn)行時(shí)都不需要甚至?xí)?bào)錯(cuò)。雖然也不影響運(yùn)行,但是彈個(gè)窗口出來說 什么不fail to execute總是讓別人覺得你是個(gè)lowb。所以,調(diào)試的時(shí)候加一下,到時(shí)候execute的時(shí)候去掉。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- Pyinstaller打包文件太大的解決方案
- pyinstaller封裝exe的操作
- 基于pyinstaller超級(jí)加密操作(加殼和轉(zhuǎn)c)
- 基于PyInstaller各參數(shù)的含義說明
- 解決Pyinstaller打包軟件失敗的一個(gè)坑
- Python實(shí)現(xiàn)圖片指定位置加圖片水印(附Pyinstaller打包exe)