Pyinstaller 打包python脚本为可执行程序

1.确认python脚本可以在python3.x下执行,我的脚本为DaZo.py, python版本为3.7

2.安装Pyinstaller

3.打包python脚本,参考一下:

pyinstaller -F -w -pD:\tmp\core-python\libs -i d:\tmp\main.ico DaZo.py

        -F 表示生成单个可执行文件;

        -D  –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。

        -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!;

        -c  –console, –nowindowed 使用控制台,无界面(默认);

        -p 表示你自己自定义需要加载的类路径,一般情况下用不到;

        -i 表示可执行文件的图标。


4.出现的问题及解决方案

4.1 报错:Cannot find existing PyQt5 plugin directories

解决方法:

根据Paths checked后面的路径建立文件夹,把Anaconda下的qt文件夹里的plugins文件夹下的所有文件复制到新建的文件夹里,我的电脑上对应的位置是:D:\ProgramData\Anaconda3\pkgs\qt-5.6.2-vc9hc26998b_12\Library\plugins,再重新打包即可成功。

创建文件夹时,先进入C盘根目录,然后利用md qt64\qt_1544645195969\_h_env\Library\plugins的命令即可创建文件夹。

2.报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 

解决方法

1、首先尝试将中文解释都去掉
2、然后,改变控制台的编码格式为utf-8  解决方法,先在控制台中输入 chcp 65001,
然后再使用pyinstaller  打包即可!

ImportError:No module named 'xxx'

这个问题出现的原因是,有些模块是隐藏导入的,但是pyinstaller打包时并未指定,所以执行时找不到此模块

二、问题解决:打包文件时,会生成一个spec文件;假如你主python文件叫做main.py,那么修改main.spec文件

我遇到的是No module named scipy._lib.messagestream

然后需要做的就是:

1、设置此模块隐藏导入

2、以此spec文件打包python(修改后记得保存)

打包后再执行exe文件,运行成功

D:\pythonWork\baiduai>pyinstaller -F machine1.py --hidden-import matplotlib.backends.backend_tkagg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值