转一部分: http://ju.outofmemory.cn/entry/137370
使用PyInstaller打包Python程序
PyInstaller介绍:
PyInstaller是一个能将Python程序转换成单个可执行文件的程序,操作系统支持Windows, Linux, Mac OS X, Solaris和AIX。并且很多包都支持开箱即用,不依赖环境。
环境为windows7操作系统,python2.7.8 virtual environment
官网: https://github.com/pyinstaller/pyinstaller
详细步骤:
1,win7下面先安装这个依赖: pywin32 ,下载下来后切换到venv2.7,然后使用easy_install xxx.exe安装
2,pip安装PyInstaller:
pip install pyinstaller
3,打包过程中可能会出现msvcp90.dll找不到的问题,去 http://cn.dll-files.com/msvcp90.dll.html 下载第三个zip文件,解压后放到C:\Windows\System32,如果是64位的还要放到C:\Windows\SysWOW64目录下。
4,再次运行报MSVCR90.dll找不到,同理去 http://cn.dll-files.com/MSVCR90.dll.html 下载MSVCR90.dll,放到C:\Windows\System32和C:\Windows\SysWOW64中。
5,将你的整个程序先复制到某个临时文件夹下面,比如D:\tmp\core-wxpython,此目录下有个main.py是执行入口
6,执行build命令,并添加必要的搜索路径,外加执行文件的图标:
cd D:\tmp\core-wxpython pyinstaller -F -w -i d:\tmp\main.ico main.py
如果还想添加自定义的依赖库,就要加上-p参数:
pyinstaller -F -w -p D:\tmp\core-python\libs -i d:\tmp\main.ico main.py
参数说明:
-F 表示生成单个可执行文件
-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!
-p 表示你自己自定义需要加载的类路径,一般情况下用不到
-i 表示可执行文件的图标
需要注意的是:
1).检查生成的\XXX\build\pyi.win32\XXX\warnXXX.txt(XXX是你的项目名)中,是否缺少了必要的模块。如果有缺少的,那么去如上所述,添加必要的搜素路径,使得pyinstaller在运行时,可以找到对应的模块并集成进来。
2).此处我这里没有UPX,暂时没去折腾。估计是用UPX去压缩,压缩后所生成的exe文件的大小,会小得多。