在我们完成一个Python项目或一个程序时,可以将Python的py文件打包成在Windows系统下直接可以运行的exe程序。之前使用python2.7时,我在博客中总了一种使用使用py2exe对py文件进行打包的方式,但是同样的过程运用到python3.6就不行了(可能是我环境问题),于是决定采用pyinstaller来进行文件打包的方法。
下载pyinstaller
采用命令行操作的办法
在cmd命令行中,输入代码:
pip install pyinstaller
或者采用更新、升级的方法:
pip install --upgrade pyinstaller (如果库包不正常,可以这样升级)
采用下载文件+cmd操作的办法
首先,前往PyInstaller网站下载:http://www.pyinstaller.org/downloads.html
下载时,要注意你安装的Python是多少版本的,有稳定版和不稳定版的,Python3.6只有不稳定版本的。其中绿色方框的是适用于linux操作系统下的,红色方框是适用于Windows系统下的。
进行解压缩、放置和安装
下载后,将压缩文件解压缩在Python安装目录下,进入该文件:
该目录中含有setup.py,同时在cmd中进入该目录:
输入命令:
python setup.py install
并按下回车键,会看到代码迅速执行,会进行安装pyinstaller,显示如下状态,看到“Finished processing dependencies for PyInstaller==3.3.dev0+41c426f6d”,即安装成功:
使用pyinstaller打包py文件成exe程序
打包文件成exe程序
将cmd的目录切换至(命令:cd 文件路径(注意空格))需要打包的py文件目录下:
并输入代码,格式为使用命令:pyinstaller -F 文件名(带后缀py):
pyinstaller -F test.py
常用参数说明:
–icon=图标路径
-F 打包成一个exe文件
-w 使用窗口,无控制台
-c 使用控制台,无窗口
-D 创建一个目录,里面包含exe以及其他一些依赖性文件
pyinstaller -h 来查看参数
回车后,代码迅速操作,直到操作结束。
返回目标文件目录,发现该目录下生成了.spec文件test.spec:
打包好的exe文件,在同目录的dist文件中:
由此,py文件打包好为exe文件。但是该主程序运行需要依赖的文件夹还是需要放置在指定位置,比如这里model和captcha_tmp就需要和exe放在同目录下,该文件才能正常执行。这和运行py文件时是一致的。
pyinstaller 改变生成exe程序的图标
pyinstaller -F --icon=my.ico test.py
my.ico 是一个图标名,和当前的test.py文件在同一个目录下
报错及解决:
1、for real_module_name, six_moduleAttributeError: ‘str’ object has no attribute ‘items’
原因是setuptools的版本不对;
使用pip install --upgrade setuptools 更新到最新版本后问题解决