Pyinstaller打包的一些坑

Pyinstaller打包的坑

pyinstaller是python windows下打包的神器,但是使用过程中经常会碰到坑,以下是我碰到的坑。

1、打包体积太大

1.1在虚拟环境下搭建干净的环境

打开cmd 输入以下命令创建一个虚拟环境。

#建立虚拟环境
pipenv install
#进入虚拟环境
pipenv shell
#安装模块
pip install 你py文件里用到的模块
#打包的模块也要安装
pip install pyinstaller
#开始打包
pyinstaller -Fw 

1.2把不必要的库去掉

记得我有次做一个数据去重的功能,用了pandas的库,结果打包起来将其他没有用到的库也打包进来了,后面一查,发现pandas、Numpy等多个库会相互关联,在打包的时候尽管没用到,打包也要算进来。(特别是numpy和pandas库及其的大)
本来打包下来一个简单信息写入excel并去重的小程序,硬是打包成了700m的执行文件,后来去重的功能我不用pandas写,立马到了11m,小的非常明显。

2、直接执行py文件可以运行,打包后无法执行

这个问题我查了蛮久的,后面在知乎上找到了解决方案。先到/build/name/warnname.txt的报错里看,发现了n多的missing module,想想也不可能缺失那么多模块。
在这里插入图片描述
于是试了第二种方法。平常我们打包都会-Fw,这次我让他运行的时候窗口化,直接-F

pyinstaller -F file名

执行新生成的应用程序,在cmd框出现的时候注意好,到了弹报错信息的时候快速截屏,拍下错误信息。
在这里插入图片描述
提示我没有一个十进制的库,但是事实上,我并没有直接引用这个库,查了很多方法,最后发现编译过程中会参生一个同名的spec文件,将里面图示部分加入提示缺少的库
在这里插入图片描述
然后把之前生成的dist等文件删了,重新编译一遍,ok通过!
在这里插入图片描述

3、在32位电脑上无法运行

原先我还以为是电脑缺少一些必要的环境文件,后来想想用的都是些基本的库。专头发现是因为自己的电脑是64位,当初装的anaconda和py都是64位的,pyinstaller也是64位的,所以必然没法兼容32位。

3.1方法1——虚拟一个32位的python环境,装32位pyinstaller,再重新编译。

可以利用anaconda

set CONDA_FORCE_32BIT=1 //切换到32位
conda create --name python36 python=3.6 //创建一个python3.6的环境,命名为python36
conda info --envs //查看是否添加成功
activate python36 //切换到python3.6环境
python --version //确认python环境

然后再装pyinstaller再去打包

pip -V //再次确认是否为32位的pip
pip install pyinstaller //安装pyinstaller

3.2方法2——重装32位的python环境

这种就重装一个新的环境,没啥讲的。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值