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 除法小技巧
Sep 06 Python
python sqlobject(mysql)中文乱码解决方法
Nov 14 Python
深入理解python函数递归和生成器
Jun 06 Python
Python正则表达式使用范例分享
Dec 04 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
python opencv实现证件照换底功能
Aug 19 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
Python性能分析工具Profile使用实例
Nov 19 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
Python设计密码强度校验程序
Jul 30 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 在文件指定行插入数据的代码
2010/05/08 PHP
理解和运用PHP中的多态性[译]
2011/08/02 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
PHP中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
浅谈javascript 面向对象编程
2009/10/28 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
用Python编写简单的微博爬虫
2016/03/04 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
flask框架路由常用定义方式总结
2019/07/23 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
公司JAVA开发面试题
2015/04/02 面试题
奶茶专卖店创业计划书
2014/01/18 职场文书
催款函怎么写
2015/06/24 职场文书
求职自我评价参考范文
2019/05/16 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python