• 解决使用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

  • 相关阅读:
    学习Vue CLI 3.x版本的安装以及创建项目
    Java中同一线程中的对象hashcode一样
    Java中线程范围内共享问题
    Java中的线程池模拟
    java中的Switch
    string、stringbuffer、stringbuild的时间性能对比
    Java中lock上锁 unlock解锁
    java中的三目运算
    Java中的Instanceof
    一个简单的for循环
  • 原文地址:https://www.cnblogs.com/shenzhenhuaya/p/gfgdf_54685.html
Copyright © 2020-2023  润新知