Python文件打包为EXE

在使用python开发了脚本之后,总是想要打包一下,无奈py2exe目前还是不支持python3+的版本,所以只能是使用另外两款打包软件:pyinstaller和cx_Freeze,看了一些资料,说后者的打包效果不好,于是还是使用前者进行打包:

安装pyinstaller很简单,直接使用pip安装就行了:

可以直接看到pyinstaller的版本号:

Python文件打包为EXE

Python文件打包为EXE

接下来可以使用下面的两个命令进行python文件的打包:

前者打包完成会在dist文件夹下面生成好多的dll和相应的导入库文件,后者直接生成一个大的exe,所以一般还是选择第二个命令。在执行命令之后,pyinstaller还会在script.py文件夹下生成一个同名的script.spec文件,这个文件就是打包的配置文件,有点类似于makefile,里面很多参数可以设置。


下面进入正题:

上面的表述看上去非常简单,命令一执行就直接生成exe,这是多好的事情,但是事实就是生成的exe不能执行,最常见的错误就是:

这个问题困扰好久,谷歌上的各种方法也试过,结果解决了这个问题还有下一个XXX package is required的问题。经过一阵摸索,给出通用解决办法:

不需要对setuptools进行降级,我的计算机的配置环境是Anaconda3+python3.5+pyinstaller3.2+setuptools28.6.1。

缺什么先安装什么,上面缺少‘six’ package,则直接用下面命令进行安装:

安装之后从新编译生成exe,如果不提示这个包缺少则算通过。

再比如,如果出现了下面的appdirs包缺少,同样pip安装appdirs这个包,之后进行编译生成exe。

Python文件打包为EXE

Python文件打包为EXE

但是问题出现了,当我安装了appdirs之后,生成的exe运行的时候还是会出现上图的情况,那么就需要打开script.spec文件,找到hiddenimports=[ ]一行,在方括号中增加’appdirs’,单引号不能丢失,经过一阵试验之后,我的spec文件配置如下:

因此总结一下pyinstaller缺少包的处理流程:

Python文件打包为EXE

Python文件打包为EXE

一条评论

  1. 我欲乘风   •  

    小天才!!!

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Are you human? Click the Apple...