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 -*-避免乱码以及不必要的错误