Pyinstaller (python打包为exe文件)
需求分析:
- python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速。
- 当然打包的脚本似乎不是在所有的win平台下都能使用,win7有一部分不能使用,我在win10能够很好的运行。
准备:
- pyinstaller (http://www.pyinstaller.org) 首先还是去官网看支持的python版本,不然会很尴尬的。
安装:
需要安装pyinstaller和pywin32
使用以下命令将会自动安装两个包,在cmd用pip命令
- 方法一:
pip install -i https://pypi.douban.com/simple/pyinstaller(豆瓣源)
- 方法二:
pip install pyinstaller(会自动下载future, pywin32, pyinstaller)
运行方式:
1、cmd进入到安装pyinstaller的python环境下的/python/scripts目录 找到pyinstaller.exe。
2、执行命令:
pyinstaller.exe -F path:demo.py
案例:
将D:\pythonProject\python3.5\september19\calculator.py文件打为exe可执行文件
# 1.cmd进入到安装了pyinstaller的目录下
D:\pyutil>F: # 切换盘符
F:\>cd pyenv/pyutil/scripts # 切换目录
# 执行命令 -F 生成one-file的程序
F:\pyenv\pyutil\Scripts>pyinstaller.exe -F D:\pythonProjects\Python3.5\september19\calculator.py
# 执行成功后会当当前目录下生成一个dist目录并在dist目录上生成一个exe文件
11445 INFO: Appending archive to EXE F:\pyenv\pyutil\Scripts\dist\calculator.exe
各参数含义
通用参数
| 参数名 | 描述 | 说明 |
|---|---|---|
| -h | 显示帮助 | 无 |
| -v | 显示版本号 | 无 |
| --distpath | 生成文件放在哪里 | 默认:当前目录的dist文件夹内 |
与生成结果有关参数
| 参数名 | 描述 | 说明 |
|---|---|---|
| -D | 生成one-folder的程序(默认) | 生成结果是一个目录,各种第三方依赖、资源和exe同时存储在该目录下 |
| -F | 生成one-file的程序 | 生成结果是一个exe文件,所有的第三方依赖、资源和代码均被打包进该exe内 |
| -n | 生成.exe文件和.spec的文件名 | 默认:用户脚本的名称,即main.py和main.spec |
Windows和Mac特有的参数
| 参数名 | 描述 | 说明 |
|---|---|---|
| -c | 显示命令行窗口 | 与-w相反,默认含有此参数 |
| -w | 不显示命令行窗口 | 编写GUI程序时使用此参数有用。 |
| -i | 为main.exe指定图标 | pyinstaller -i beauty.ico main.py |
详情请参考:PyInstaller各参数含义
后记
- 程序自定义图标:
pyinstaller -F -i ico_path py_path
首先需要下载一张正常的ico,不能直接修改后缀的。
下载图片:https://www.easyicon.net
图片改ico:http://www.bitbug.net
输入命令
pyinstaller -F -i demo.ico main.py # 命令格式一定是先图标路径,再程序路径。
- 报错提示:
路径最好为英文,没有中文字符;脚本名称里没有特殊字符如.
使用utf-8编码
图标文件必须是正常格式,不能直接更改后缀。
tuble index out of range --> pyinstaller 版本未支持的python版本 - 窗口程序
使用 pyinstaller -F -w -i ico_path py_path ,这样脚本不会弹出命令窗,前提是用了GUI库.
几个非常重要的问题
- 命令使用pyinstaller和pyinstaller.exe结果都是一样的
- -w是不显示命令窗口, -i 图标文件的路径 这是改变图标的,但是我发现只能改变任务栏里的和命令窗口的图标,并不能改变exe文件的图标。另外这些参数要加载pyinstaller和路径中间。
- 有一些代码需要调用一些图片和资源文件的,这是不会自动导入的,需要你自己手动复制进去才行。不然exe文件运行时命令窗口会报错找不到这个文件。
- 也是最坑的一点。就是当你使用错误的参数去打包或者打包到一半中断,等等此类运行到一半没了的情况。会导致你原来的py文件变成一个0KB的空文件。里面的代码会全部消失!!!所以以后需要有个良好的习惯,就是复制一份代码出来,用这个副本进行打包。并且参数出错,或者打错了导致失败时,检查下副本文件的py文件是否还存在再继续重新打包,不然打出来的就是空的文件,自然一直闪退,因为压根没内容。
- 写代码的时候应当有个良好的习惯,用什么函数导什么函数,不要上来import整个库,最后你会发现你一个100KB的代码打包出来有500MB,全是库,简直无语
- pygame代码调试的时候要用quit()不然程序结束时会崩溃。但是直接运行py文件就不需要这个函数。这个我们之前的文章也提到过了。但是这里当我使用-w做成无窗口的程序后,一结束发现报错,暂停后发现报的是找不到quit()函数。可见这个函数其实是一个很让人无语的函数。一方面pygame官方网上说结束程序的时候需要加入这个函数。另一方面其实在正在运行时都不需要甚至会报错。虽然也不影响运行,但是弹个窗口出来说 什么不fail to execute总是让别人觉得你是个lowb。所以,调试的时候加一下,到时候execute的时候去掉。
Pyinstaller (python打包为exe文件)的更多相关文章
- Pyinstaller(python打包为exe文件)
需求分析: python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速. 当然打包的脚本似乎不是在所有的win平台下都能使用, ...
- 使用pyinstaller将Python打包为exe文件
当我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序,那么pyInstaller就是一个很好的选择.pyInstaller可以将 ...
- 使用pyinstaller将python打包成exe文件
步骤: 1)win+R 输入cmd打开dos窗口 2)先安装pyinstaller: pip install pyinstaller 3)然后使用cd命令进入项目文件的路径下: 4)再使用命令 ...
- Python 之pyinstaller模块打包成exe文件
一.安装pyinstaller pip install pyinstaller 二.下载安装pyinstaler运行时所需要的windows扩展pywin32 https://github.com/m ...
- 反编译python打包的exe文件
目录 1.前言 2.使用环境 3.还原过程 4.号外 5.exe文件和所用到的反编译工具 6.参考 7.去签名(补漏) 前言 拿到了利用驱动人生进行传播的病毒样本,发现是python打包成的exe文件 ...
- Python打包成exe文件很难?一分钟即可学会,并添加图标!
环境1.python 3.72.pyinstaller下载方式:2.1 python安装(略)2.2 安装pyinstaller打开DOS窗口输入以下命令:pip install pyinstalle ...
- python打包生成exe文件
今天任务让做一个可以在Win上直接执行的脚本,百度了下原来可以生产.exe文件.神奇了 安装 pyInstaller pip install pyInstaller 进入要打包文件的目录 执行 py ...
- python打包成为exe文件
pyinstaller 库的使用 PyInstaller是一个十分有用的第三方库,它能够在Windows.Linux.Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,Py ...
- python打包为exe文件
1.安装 pyinstaller 包 pip3 install pyinstaller 2.进入python文件目录 进入Python程序文件夹py文件处,按住shift并且右键,在弹出的选项中点击& ...
随机推荐
- Python——类的封装
class Gun: def __init__(self, model): # 1. 枪的型号 self.model = model # 2. 子弹的数量 self.bullet_count = 0 ...
- 前端笔记知识点整合之JavaScript(二)关于运算符&初识条件判断语句
运算符 数学运算符的正统,number和number的数学运算,结果是number.出于面试的考虑,有一些奇奇怪怪的数学运算: 数学运算中:只有纯字符串.布尔值.null能够进行隐式转换. //隐 ...
- nginx+uwsgi+django开发环境搭建
Nginx+uWSGI+Djangoi开发环境搭建 Django简介,环境搭建 uWSGI简介,安装与配置 Nginx安装与配置 Nginx+uWSGI+Django原理解析 1.django简介,环 ...
- js特殊符号(转)
HTML有许多特殊的字符,您对此有多少了解?平时在WEB制作中,您又有用到多少?或者说你在平时使用之时,是否也会碰到,有许多特殊字符要如何打印出来?比如说“笑脸”,比如说“版权号”.要是你用时忘记了这 ...
- Java序列化随记
序列化简介: 程序中的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,因此需要Java序列化技术. Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制 ...
- RPA 介绍
一 术语表 机器人流程自动化(RPA):在数字系统中模拟和集成人类行为以优化业务流程的软件机器人.RPA自动化捕获数据.运行应用程序.触发响应并与其他系统通信以执行各种任务. RPA路线图(RPA r ...
- coding基本功实践
作为一名程序员,除了需要具备解决问题的思路以外,代码的质量和简洁性也很关键.因为从一个人的代码可以直接看出你的基本功.对于Python而言,这就意味着你需要对Python的内置功能和库有很深入的了解. ...
- Python3——坦克大战
# coding=utf-8 # Version:python3.6.1 __date__ = '2018/9/20 18:51' __author__ = 'Lgsp_Harold' import ...
- TP-Shop安装步骤教程(Windows版)
TP-Shop安装步骤教程(Windows版) PS:首次发文,请多指教! 一.安装要求 1.PHP5.4以上,MYsql5.5以上. 2.需要Phpcurl,gd库.php_mysqli,php_o ...
- vue请求PHP接口报错provisional headers are shown
因为服务器相应时间太长, 所以出现这个提示. 解决办法: 把axios的请求超时的时间timeout的时间改长一点.