python版本:python 2.7
python 3.7
編譯器:Pycharm
python有着很多將 py文件轉化為exe可執行文件,其中pyinstaller用的最廣泛
但是pyinstaller編譯的同時坑也隨之出現
一、pyinstaller安裝
1. python2.x : pip installer pyinstaller
2. python3.x : pip3 installer pyinstaller
3. pycharm :請在setting中設置(這里不做詳解)
二、使用命令
基本命令 :pyinstaller xx.py 會產生一些依賴文件不能單獨運行
普通命令 :pyinstaller -F xx.py 將產生的依賴文件整合在exe文件中
加入圖標命令 :pyinstaller -F -i xx.ico xx.py
三、轉化過程中的坑
1、
命令輸入錯誤
2、加入圖標時報錯 struct.error: unpack requires a string argument of length 16
選用的圖標必須為16*16格式,將格式轉化為16*16即可成功
3、圖片格式必須為ico格式不然也會報錯
4、運行后亂碼情況或編譯為exe文件時報錯UnicodEerror
cmd命令框窗口使用的編碼格式為gbk
在py文件中,在首行寫入# -*- coding:gbk -*-
四、關於python2.x與python3.x打包之后的區別
python2.x
1.python2.x對於導入的模塊會進行自動整合進exe文件中
2.對於輸入函數,如果輸入的為字符串需要使用str(raw_input())函數
3.使用python2.x的時候必須首行寫入 # -*- coding:utf-8 -*-,不然輸入漢字會報錯,或者運行亂碼
在pyinstaller編譯前將utf-8改為gbk
python3.x
1.相比於python2.x,模塊並不會自動整合到exe文件中,運行時會報錯缺少xx模塊
使用命令解決:pyinstaller -F -p 模塊路徑 xx.py
2.對於輸入函數,python3.x取消了raw_input()的字符輸入,統一使用input()函數,輸入的內容統一以字符格式
在形成的exe文件后執行輸入字符時,必須要用 ' ' 將輸入的文字表示為字符
3.相比於python2.x,python3.x不需要在首行寫入# -*- coding:utf-8 -*- 也能自動識別漢字
在轉化為exe文件時,依然需要寫入# -*- coding:gbk -*-避免亂碼以及不必要的錯誤