Python程序打包
一、为什么要对Python程序打包?
当手头Python脚本的运行环境要求不同,时间又紧急,
处理数据时又要临时搭建环境,很是麻烦
如果将Python脚本打包成可执行文件后会方便许多
也不用考虑运行环境的差异,随时随地运行
二、将Python程序打包的方法
我使用的是Python3.6 32位,windows8x64系统
这里直接推荐使用PyInstaller进行打包,至于为什么不用py2exe后面会说
1.安装PyInstaller
首先你要有pip安装工具,一般2.7.9以上或者3.4以上版本都内置了pip工具。假如你没有,那么你可以参照https://www.cnblogs.com/limit1/p/8350344.html(windows系统)
http://www.runoob.com/w3cnote/python-pip-install-usage.html(Linux系统)
安装好pip,打开cmd,输入:
pip install pyinstaller
等待下载和安装完成即可。
2.对Python程序进行打包
先要在命令行进入到打包目标目录,并输入:
pyinstaller -F test_demo.py
这里-F是指生成.exe文件,详细内容https://blog.csdn.net/leida_wt/article/details/78698674
这里假如你使用的是Python3.6,那么恭喜,你会遇到这个错误
这是因为PyInstaller目前还不支持Python3.6 ,那么我们应该怎么办呢?
我们需要到GitHub上下载改进版,地址https://github.com/pyinstaller/pyinstaller
下载解压后将文件夹PyInstaller(没有的话将pyinstaller-develop文件夹更名为PyInstaller)
复制到
这时候你会发现打包目录里多了两个文件夹build和dist,那个dist文件夹里就是你想要的.exe文件了
点击运行就可以啦~~
另外要提一下,对于用到了多线程的Python程序需要单独注意,PyInstaller有很多线程的问题,打包后双击exe程序运行时,程序会不停的启动进程,但是并没有真正执行进程(详见https://blog.csdn.net/t1014336028/article/details/83018987)
按照网上提到的办法,在 if __name__ == '__main__': 下面加一行代码:multiprocessing.freeze_support(),再打包运行.exe文件,就可以跑起来了。
想了解更多有关PyInstaller的内容可以看这位大佬的博客http://ju.outofmemory.cn/entry/137370,还有针对PyInstaller打包的其他问题的解决办法,非常全面,极力推荐
三、为什么不用py2exe
假如你使用的是py2exe,并已安装完成,而且运行环境是Python3.6。
那么你仍会遇到这个错误 IndexError: tuple index out of range
官方文档表示对Python3.6完全不支持