pyinstaller ---转载文章

  • 视频:https://www.bilibili.com/video/av21670971/

  • PyInstaller可以用来打包python应用程序,打包完的程序就可以在没有安装Python解释器的机器上运行了。PyInstaller支持Python 2.7和Python 3.3+。可以在Windows、Mac OS X和Linux上使用,但是并不是跨平台的,而是说你要是希望打包成.exe文件,需要在Windows系统上运行PyInstaller进行打包工作;打包成mac app,需要在Mac OS上使用。

  • 安装

    • pip isntall pyinstaller
  • 使用

    • 命令行程序

      • pyinstaller helloworld.py
    • 窗口程序+命令行输出
      • pyinstaller happy_not.py
    • 只有窗口程序
      • pyinstaller -w happy_not.py
  • 重要选项

    • -D, --one-dir打包成一个文件夹,默认
    • -F, --one-file打包成一个exe文件 (启动慢,在C盘中创建_MEIxxxxxx临时文件夹,由bootloader复制文件运行结束后自动删除,意外关闭程序,临时文件无法删除)
    • -p DIR, --paths DIR添加路径,一般用来添加程序所用到的包的所在位置
    • -c, --console,
    • --nowindowed无视窗,程序后台运行
    • -w, --windowed, --noconsole 提供程序视窗,程序没有命令行输出,默认
    • -i 添加icon图标   pyinstaller -F -w -i "D:\360Downloads\2018-10\pyqt5\pyqt5-processBar\pic.icon"  "D:\360Downloads\2018-10\pyqt5\pyqt5-processBar\Main.py
    • -d, --debug 生成debug模式的exe文件
    • -v FILE, --version=FILE 加入版本信息文件
    • -o DIR, --out=DIR 设置spec文件输出的目录,默认在PyInstaller同目录
  • 经验

    • py程序中使用了第三方库的打包方式(如果python 直接使用cmd安装第三方库在默认环境下而不是anaconda 可以不用复制第三方库)

      • 在打包之前务必找到第三方库的包,把包复制到到跟myfile.py同目录下,然后再使用以上2种方式打包,否则会打包失败或者即使打包成功,程序也会闪退
      • 例如使用BeautifulSoup解析xml
        • from bs4 import BeautifulSoup
        • so = BeautifulSoup(msg, 'xml')
          • 使用了lxml模块,必须把C:\Users\play\AppData\Local\Programs\Python\Python36\Lib\site-packages\lxml文件夹复制到打包文件夹
      • 另外一个方法是
        • import lxml
        • pyinstaller会自动引入

pyinstaller打包程序常见问题总结:

1、缺少PyQt5.sip

  重新cmd安装 pip install PyQt5.sip

2、

Could not find the Qt platform plugin "windows" in  This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

  解决方法:拷贝pyqt5的platforms文件夹到生成的可执行程序同级目录下,如我的是:C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Lib\site-packages\PyQt5\Qt\plugins

3、打开exe文件运行无反应

    • 首先查看自己打包时候用的参数,如果码中没有tkinter之类的GUI窗口的话就不要用 -w 了
      同时查看一下码里面有没有标准化输入输出,例如print,如果有就不要用 -w
      因为 -w 参数的意思是关掉控制台dos窗口,本来要显示的东西就只能显示在dos上,所以自然什都没有

解决方法:

  • pyinstaller -F xxx.py

4、问题:提示failed to execute script xxx

这个问题我遇到的时候是用tkinter在写一个小程序,生成exe点开之后就出现了failed to execute script xxx的问题,如下图

重新打包,在打包的时候加入了参数 -c

加入参数-c后重新打包再次运行exe

-c的作用是返回错误信息!错误信息如上图所示,没有找到‘bg.jpg’!
这个文件是我用作tkinter窗口背景的一张资源。
这张图片是直接放在py文件的同一目录下的,直接打开py文件运行没有问题
而生成exe后运行却提示failed to execute scrip...
问题就出在这里!打包后的exe生成在dist文件夹中,exe不在与资源文件在同一目录,将‘bg.jpg’ copy到 与exe文件同一目录下以后问题解决。由此知道,pyinstaller打包并没有将调用到的资源文件打包在exe文件中,所以exe没有办法再用到该资源。解决办法是将资源和exe文件放到同一目录或者将源码中用到的资源路径改成绝对路径。

5、问题:打包的时候出现了很多warning:lib not found...dll

  • 原因是pyinstaller 没有办法识别到这些dll

解决办法:是中copy warning中一些dll文件的名字,再电脑中搜索到他们的路径!
我搜索到的路径:C:UsersASUSAppDataRoamingpyinstallerbincache00_py36_64bit

该路径下面就是那一大堆warning的dll文件,这个路径添加到环境变量里面
方法如下
右键 此电脑——属性——高级——环境变量——用户变量中Path编辑新建然后填入刚刚dll所在的路径
然后问题就解决了

6、已经安装了PyQt5.sip  但是打开打包后的exe文件总是报错缺少PyQt5.sip

解决办法:

  在程序中 引用:import PyQt5.sip

pyinstaller-打包python程序为exe文件的更多相关文章

  1. “failed to excute script xxx” PyInstaller 打包python程序为exe文件过程错误

    在使用PyInstaller打包python程序,打包命令为: pyinstaller -F -w -i manage.ico yourpyfile.py 顺便说一下几个参数的作用 -F:是直接生成单 ...

  2. PyInstaller 打包 python程序成exe

    pychaim下PyInstaller 打包 python程序 主题是使用PyInstaller 打包python时遇到一些问题以及解决方案,其中将要打包的程序是用tensorflow做的LSTM算法 ...

  3. 【Python】 如何用pyinstaller打包python程序成exe

    [pyinstaller] pyinstaller在他们的官方网站上下载:http://www.pyinstaller.org/ 下载完pyinstaller之后还要安装一个支持包pywin32. 这 ...

  4. pyinstaller打包.py程序为.exe操作指南

    pyinstaller打包.py程序为.exe操作指南 20190526内容纲要: 1.pyinstaller安装 2.程序封装 3.可执行程序 0 前言 今天第一次试试将一个py程序封装成一个.ex ...

  5. win7 32位用pyinstaller打包Python和相关html文件 成exe

    http://tieba.baidu.com/p/3060401749?traceid= 安装 pyinstaller 然后 第一步你的脚本里面要做相应处理,添加一个函数:def resource_p ...

  6. python程序转为exe文件

    python开发者向普通windows用户分享程序,要给程序加图形化的界面(传送门:这可能是最好玩的python GUI入门实例! http://www.jianshu.com/p/8abcf73ad ...

  7. 【Python开发】PyInstaller打包Python程序

    PyInstaller是一个能将Python程序转换成单个可执行文件的程序, 操作系统支持Windows, Linux, Mac OS X, Solaris和AIX.并且很多包都支持开箱即用,不依赖环 ...

  8. Pyinstaller打包Selenium脚本为exe文件执行问题

    由于同事辞职,许多运维工具的维护工作就交到我这里处理了,运维居然没人会Python脚本! 用Selenium编写的一个爬虫脚本cctv.py,需要给不懂软件的人运行.为了不让他去搭建,安装各种包,库, ...

  9. 用pyinstaller打包python程序、打包pyqt程序

    将.py脚本拷贝到一个文件夹中: 然后shift+右键,打开Powershell窗口: -F:设置打包为一个.exe文件.(缺点打开速度慢,不加-F则不打包为一个.exe,优点简洁方便) -w:设置不 ...

随机推荐

  1. Hive数据倾斜解决办法总结

    数据倾斜是进行大数据计算时最经常遇到的问题之一.当我们在执行HiveQL或者运行MapReduce作业时候,如果遇到一直卡在map100%,reduce99%一般就是遇到了数据倾斜的问题.数据倾斜其实 ...

  2. 什么是位、字节、字、KB、MB (转)

    回顾一下按位操作符和移位操作符的知识,顺便复习一下位相关的基础知识. 位:"位(bit)"是电子计算机中最小的数据单位.每一位的状态只能是0或1. 字节:8个二进制位构成1个&qu ...

  3. openCV函数

    1.cvInitFont ,, ); font 被初始化的字体结构体. font_face 字体名称标识符.只是Hershey 字体集( http://sources.isc.org/utils/mi ...

  4. linux安装中文输入法

    CentOS英文系统安装中文输入法,简单说说在CentOS 6.3下用yum安装中文输入法的过程.   1.需要root权限,所以要用root登录 ,或su root 2.yum install &q ...

  5. Oracle relink 重新编译

    如此而已! export ORACLE_HOME=/opt/oracle/11.2 export LD_LIBRARY_PATH=/lib:/lib64:$ORACLE_HOME/lib:$ORACL ...

  6. Service 中的 onStart 和 onStartCommand

    在自定义的service中,写了onStart和onStartCommand, public class HttpWebService extends Service { @Override publ ...

  7. ABBYY OCR技术教电脑阅读缅甸语(上)

    缅甸联邦共和国,原名缅甸,是东南亚的一个国家,从1962年到2010年,缅甸一直被政变后上台的军政府统治,直至最近5年它才对外界开放,与其他国家建立了贸易与文化联系. 缅甸语由很多方言组成,但所有方言 ...

  8. glob通配符

    描述glob是shell使用的路径匹配符,类似于正则表达式,但是与正则表达式不完全相同.在linux操作中如文件匹配等等其实已经使用了glob通配符.由于其在路径匹配方面的强大,其他语言也有相应的实现 ...

  9. IDEA导入springboot项目不能启动

    由于工具没有识别到项目的pom.xml文件,所以需要在右侧的Maven栏目中点击 + 号,选中项目的pom.xml文件,则导入成功.

  10. 9.26/27 blog项目

    2018-9-26 18:05:20 放上一个老男孩b站视频连接 :https://shimo.im/docs/VN0BLgAIBdMVSa4S/ b站连接: https://space.bilibi ...