Pyinstaller 打包exe教程及问题解决


Posted in Python onAugust 16, 2019

安装

pip insatll Pyinstaller

参数

pyinstaller -Fw main.py

参数 概述
-F,-onefile 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用
-D, ?onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护
-K, ?tk 在部署时包含 TCL/TK
-a, ?ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码.
-d, ?debug 产生debug版本的可执行文件
-w,?windowed,?noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
-s,?strip 可执行文件和共享库将run through strip.注意Cygwin的strip往往使普通的win32 Dll无法使用.
-X, ?upx 如果有UPX安装(执行Configure.py时检测),会压缩执行文件(Windows系统中的DLL也会)(参见note)
-o DIR, ?out=DIR 指定spec文件的生成目录,如果没有指定,而且当前目录是PyInstaller的根目录,会自动创建一个用于输出(spec和生成的可执行文件)的目录.如果没有指定,而当前目录不是PyInstaller的根目录,则会输出到当前的目录下.
-p DIR, ?path=DIR 设置导入路径(和使用PYTHONPATH效果相似).可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径,让pyinstaller自己去找程序需要的资源
?icon= 将file.ico添加为可执行文件的资源(只对Windows系统有效),改变程序的图标 pyinstaller -i ico路径 xxxxx.py
-v FILE, ?version=FILE 将verfile作为可执行文件的版本资源(只对Windows系统有效)
-n NAME, ?name=NAME 可选的项目(产生的spec的)名字.如果省略,第一个脚本的主文件名将作为spec的名字

注意事项

  • 如果程序有采用外部文件,如配置文件, 需要将文件放在dist中
  • -F 适合生成一个单一可执行的文件
  • -o 适用于多个文件引用情况,或者框架的结构

打包进程相关代码失败

例如编写一些进程相关的shell命令,打包失败,一般是使用 -F 可以成功,但是执行exe时有cmd弹窗,这非常不美观, 如果使用-Fw c参数执行exe 直接失败。 这种情况有两种解决方案。

方案一: 使用 pyinstaller -Dw file.py 生成的是一个目录文件。 程序执行成功,无黑名终端弹窗情况。

方案二: 起用 os.popen() 方法, 改用subprocess.Popen() 模块

​ 下面是我的测试,亲测成功, 参数一定要配置好,否则程序执行失败!

import subprocess
def checkprocess():
  processnames = ['EXCEL.EXE']
  for processname in processnames:
    p = subprocess.Popen('taskkill /F /IM %s' %processname,shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
    p.wait()
checkprocess()

有空写一个 关于subprocess的教程,详细研究一下他的参数配置

工欲善其事,必先利其器!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用multiprocessing创建进程的方法
Jun 04 Python
python连接字符串的方法小结
Jul 13 Python
Python实现简单多线程任务队列
Feb 27 Python
Flask框架各种常见装饰器示例
Jul 17 Python
Django进阶之CSRF的解决
Aug 01 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
用python画一只可爱的皮卡丘实例
Nov 21 Python
解决torch.autograd.backward中的参数问题
Jan 07 Python
Python中bisect的用法及示例详解
Jul 20 Python
python爬取抖音视频的实例分析
Jan 19 Python
Python数据分析之pandas读取数据
Jun 02 Python
python缺失值填充方法示例代码
Dec 24 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 #Python
Python Web框架之Django框架文件上传功能详解
Aug 16 #Python
基于 Django 的手机管理系统实现过程详解
Aug 16 #Python
python创建与遍历List二维列表的方法
Aug 16 #Python
python每天定时运行某程序代码
Aug 16 #Python
pyinstaller打包opencv和numpy程序运行错误解决
Aug 16 #Python
Python Web框架之Django框架Form组件用法详解
Aug 16 #Python
You might like
php win下Socket方式发邮件类
2009/08/21 PHP
php 代码优化的42条建议 推荐
2009/09/25 PHP
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
php调整服务器时间的方法
2015/04/03 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
Javascript实现运算符重载详解
2018/04/07 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
如何使用 vue-cli 创建模板项目
2020/11/19 Vue.js
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
大学毕业登记表自我鉴定
2013/10/09 职场文书
法警的竞聘演讲稿
2014/01/02 职场文书
小露珠教学反思
2014/04/30 职场文书
青年志愿者先进事迹
2014/05/06 职场文书
淘宝客服工作职责
2014/07/11 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
如何写观后感
2015/06/19 职场文书
创业计划书之酒吧
2019/12/02 职场文书
Python 实现Mac 屏幕截图详解
2021/10/05 Python