1.用py2exe,不支持,仅支持2.x
2.用pyinstaller
安装时用pip3 install pyinstaller
打包发布
- 进入你的编程目录。
- 打开cmd。
- 键入“pyinstaller -w -i c://logo.ico yourfilename.py ” 一般用pyinstaller -w/-F yourfilename.py
- 目录下出现3个新的目录:dist、build、—pycache—
- 进入dist,找到exe文件,点击打开。
参数说明
- -F 表示生成单个可执行文件
- -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!
- -p 表示你自己自定义需要加载的类路径,一般情况下用不到
- -i 表示可执行文件的图标
报错1.如果程序含有中文字符会出现编码报错,解决办法:
改变控制台的编码格式为utf - 8解决方法,先在控制台中输入chcp 65001.
报错2.RuntimeError: maximum recursion depth exceeded
解决办法:
-
执行打包命令生成spec 文件 :
pyinstaller filename.py
A file with
.spec
as extension should be generated -
在spec文件的开头添加下列代码(增加递归深度) :
import sys sys.setrecursionlimit(5000)
-
运行spec文件 :
pyinstaller filename.spec
报错3:添加模型文件时,注意路径问题,路径是exe所在路径
curpath = os.path.abspath(sys.argv[0])
parent_path1 = os.path.dirname(curpath)
parent_path2 = os.path.dirname(parent_path1)
path = os.path.dirname(parent_path2)
报错4:ImportError: No module named 'typedefs'
pyinstall example.py --hidden-import sklearn.neighbors.typedefs
pyinstaller gui.py --hidden-import sklearn.neighbors.typedefs --hidden-import sklearn.neighbors.quad_tree --hidden-import sklearn.tree --hidden-import sklearn.tree._utils