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实现字符串反转的常用方法分析【4种方法】
Sep 30 Python
Python使用wget实现下载网络文件功能示例
May 31 Python
win10下tensorflow和matplotlib安装教程
Sep 19 Python
python之信息加密题目详解
Jun 26 Python
python实现动态数组的示例代码
Jul 15 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 Python
使用python快速实现不同机器间文件夹共享方式
Dec 22 Python
Tensorflow实现部分参数梯度更新操作
Jan 23 Python
python利用opencv实现SIFT特征提取与匹配
Mar 05 Python
windows下Pycharm安装opencv的多种方法
Mar 05 Python
利用Python实现斐波那契数列的方法实例
Jul 26 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中文本数据翻页(留言本翻页)
2006/10/09 PHP
用PHP生成html分页列表的代码
2007/03/18 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
js判断样式className同时增加class或删除class
2013/01/30 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
2016/01/22 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
Python中的异常处理学习笔记
2015/01/28 Python
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Python 基础教程之包和类的用法
2017/02/23 Python
在python中安装basemap的教程
2018/09/20 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
法国家具及室内配件店:home24
2017/01/21 全球购物
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
一份教室追逐打闹的检讨书
2014/09/27 职场文书
党员检讨书
2014/10/13 职场文书
应届毕业生自荐信
2015/03/04 职场文书
红白喜事主持词
2015/07/06 职场文书