zoukankan      html  css  js  c++  java
  • PyInstaller打包python脚本

    用python写的工具写好了,想打包然后发给测试同事使用,最后选择了PyInstaller,支持Windows、Linux、OS X,支持打包成一个文件夹或单个EXE文件。
     
    我是直接在线安装的,在CMD输入:pip install pyinstaller
    自动下载了PyInstaller-3.1.1.tar.gz和pypiwin32-219-cp27-none-win_amd64.whl并安装。
     
    如果不行也可以去官网自己下载安装(http://www.pyinstaller.org/),不过应该要先安装pypiwin32。
     
    安装后,把要打包的文件main.py(界面),b.py(逻辑,在main中调用),config.ini(配置文件)复制到F:pkg
     
    在CMD中进入F:pkg,输入:pyinstaller main.py
    然后就在F:pkg生成build和dist文件夹和一个main.spec配置文件,dist下就是打包好的文件了,运行main.exe,一闪就没了,在CMD再次运行,报错是找不到ini文件,把ini复制到dist下,再次运行,可以了。
     
    但是运行main.exe后,会多出一个CMD窗口。后面搜索后查找有一个参数-w, --windowed, --noconsole
    可以关闭控制窗口。
     
    删除打包的文件,重新打包:pyinstaller -w --windowed --noconsole main.py
    将config.ini复制过去后再次运行,OK了,这次没有控制窗口了,不过程序在调用subprocess时,仍会闪现一下控制窗口,不过没关系了,这也算间接提示我命令运行了吧。但我的程序后来还遇到个问题,有个函数以此方法打包,会无法调用。
     
     
     
    然后再想,打包不可能需要手动复制ini文件的,应该可以一起打包进去。
    再次查询pyinstaller的官方wiki,发现可以编辑main.spec实现。类似这样
    a = Analysis(...
         datas=[ ('src/README.txt', '.') ],
         ...
         )
    只要修改datas元组就可以了。第一参数是文件目录,第二个参数是放在打包好的文件的目录,'.'就是首级目录了
     
    修改后,再运行命令pyinstaller -w --windowed --noconsole main.spec
    OK了,这次打包的时候直接就把config.ini打进去了,不过我怎么觉得还是我复制过去更方便呢。。。
     
     
     
    以上打包都是打成一个文件夹,后来试了下打成单个EXE
    命令:pyinstaller -F -w --windowed --noconsole main.py
    然后同样把config.ini复制过去就OK了
     
     
     
    然后我们可以加个图标。首先找个图片,然后去http://www.ico.la/转换一下格式,我选的128*128
    将保存的图片ico.ico放到F:pkg
    输入命令:pyinstaller -F -w --windowed --noconsole -i ico.ico main.py
     
     
    参考:
    官方WIKI:http://pythonhosted.org/PyInstaller/#using-spec-files
    http://www.cnblogs.com/mywolrd/p/4756005.html
    http://www.crifan.com/use_pyinstaller_to_package_python_to_single_executable_exe/
    http://www.cnblogs.com/DxSoft/archive/2010/05/14/1735199.html
     

    --------------------------------------------------------------------------------

    关注微信公众号(测试工程师小站)即可在手机上查阅,并可接收更多测试分享,发送【测试资料】更可获取百G测试教程~

  • 相关阅读:
    JAVA 面试知识点
    JAVA String.format()的使用
    XorPay.com 支付平台介绍【免费申请个人微信支付接口】
    PC软件/web网站/小程序/手机APP产品如何增加个人收款接口
    个人收款之微信小微商户
    个人小程序接入支付解决方案
    XorPay 个人支付平台增加 个人支付宝支付接口
    Javascript中那些你不知道的事之-- false、0、null、undefined和空字符串
    网页启用Gzip压缩 提高浏览速度
    C/S架构和B/S架构的概念和区别
  • 原文地址:https://www.cnblogs.com/songzhenhua/p/9312763.html
Copyright © 2011-2022 走看看