• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
申镇华
博客园    首页    新随笔    联系   管理    订阅  订阅

解决使用pyinstaller打包问题

解决使用pyinstaller打包问题 最近需要将python文件放到没有python环境的装有windows系统的主机下去运行,这就需要将python文件打包成windows操作系统可直接识别的exe文件,将python文件打包成exe文件有两款主流打包工具分别为pyinstaller和py2exe,由于py2exe只支持python2并且版本已经很久未更新,故这里选用了pyinstaller(我的环境是python3)。但是用过pyinstaller大概都知道它有多坑,懂的都懂,下面就我使用pyinstaller的经历来做个总结。

  最近需要将python文件放到没有python环境的装有windows系统的主机下去运行,这就需要将python文件打包成windows操作系统可直接识别的exe文件,将python文件打包成exe文件有两款主流打包工具分别为pyinstaller和py2exe,由于py2exe只支持python2并且版本已经很久未更新,故这里选用了pyinstaller(我的环境是python3)。但是用过pyinstaller大概都知道它有多坑,懂的都懂,下面就我使用pyinstaller的经历来做个总结。

  Pyinstaller的下载指令如下:

1 pip install -i https://pypi.douban.com/simple/ pyinstaller #豆瓣源
2 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller #清华源

  首先,第一次使用pyinstaller我的环境是自带python3.9的Anaconda3,这个版本的Anaconda新是新但打包的时候会出现各种问题,日志里面警告显示缺各种包,最后打出来的包只能在自己电脑上跑,换个机子点exe文件他就会去打开pycharm,如果没有pycharm就会让你下载notepad++,总之就是跑不成。我想着是python3.9版本太高的问题,于是我又下载了单独的python2.7和·python3.1,但是在用pip下载pandas时,总是报无法为pandas创建wheel文件,我在网上找了各种解决办法挨着试了都不行·。

 

  思考了一个下午,我想着把Anaconda的版本降低试下,这次我选用了集成了python3.7的Anaconda3的2018版本(Anaconda各个版本下载地址 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/) 这次打包没有任何问题程序可以正常运行。

  Pyinstaller的常用执行指令如下:

 

1 pyinstaller -F py_word.py 打包exe
2 pyinstaller -F -w py_word.py 不带控制台的打包
3 pyinstaller -F -w -i chengzi.ico py_word.py 打包指定exe图标打包

 

  详细的参数解释如下:

  但是打包完之后问题接着随之而来。仅仅是一个处理excel的小程序体积竟然达到了320M,,在网上经过一番查询之后,原来是在Anaconda基础环境下打包会把Anaconda自带的所有库都打包进去,而我们的程序仅仅需要其中的几个库,为此我们需要额外在Anaconda下创建一个虚拟环境,虚拟环境中只安装我们这个程序所需要的库。

  虚拟环境操作指令如下:

 

1 conda create -n 虚拟环境名字 python==3.6  #创建虚拟环境
2 conda activate 虚拟环境名字  #激活虚拟环境
3 conda deactivate  #退出虚拟环境

 

  例如,我们创建一个名为aotu,且基于python版本3.6的虚拟环境。

 

  在创建过程中需要回复(y/n),Yes,再激活虚拟环境

 

  安装的虚拟环境,会把虚拟环境的目录生成在Anaconda安装目录下的envs下。

  当然我们也可以在刚刚的窗口,使用命令conda info --envs,来查看conda环境下所有的虚拟环境。

 

  在刚刚的窗口输入conda list可以查看当前虚拟环境里已经安装的库

 

  我们接下来打开我们的程序来看下导入的库有哪些不在虚拟环境中,我们通过pip把它下载进来,例如下载pandas和打包工具pyinstaller:

1 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas
2 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

  安装完程序需要的所有库之后再用pyinstaller打包你就会发现这次的exe文件只有28M

 

  运行一下又出现了Excel xlsx file; not supported的报错·。

  解决办法:

 

1 卸载新版本 pip uninstall xlrd
2 安装老版本:pip install xlrd=1.2.0 (或者更早版本)

 

  换完之后再打包,至此程序成功运行!

 

  参考文章1:https://blog.csdn.net/Python_kele/article/details/118495091

  参考文章2:https://blog.csdn.net/panruola/article/details/117662786

 

posted @ 2022-05-12 15:59  谁伏特  阅读(823)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3