需求分析:

  • python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速。
  • 当然打包的脚本似乎不是在所有的win平台下都能使用,win7有一部分不能使用,我在win10能够很好的运行。

准备:

安装:

需要安装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文件)的更多相关文章

  1. Pyinstaller(python打包为exe文件)

      需求分析: python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速. 当然打包的脚本似乎不是在所有的win平台下都能使用, ...

  2. 使用pyinstaller将Python打包为exe文件

    当我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序,那么pyInstaller就是一个很好的选择.pyInstaller可以将 ...

  3. 使用pyinstaller将python打包成exe文件

    步骤: 1)win+R 输入cmd打开dos窗口   2)先安装pyinstaller: pip install pyinstaller 3)然后使用cd命令进入项目文件的路径下:   4)再使用命令 ...

  4. Python 之pyinstaller模块打包成exe文件

    一.安装pyinstaller pip install pyinstaller 二.下载安装pyinstaler运行时所需要的windows扩展pywin32 https://github.com/m ...

  5. 反编译python打包的exe文件

    目录 1.前言 2.使用环境 3.还原过程 4.号外 5.exe文件和所用到的反编译工具 6.参考 7.去签名(补漏) 前言 拿到了利用驱动人生进行传播的病毒样本,发现是python打包成的exe文件 ...

  6. Python打包成exe文件很难?一分钟即可学会,并添加图标!

    环境1.python 3.72.pyinstaller下载方式:2.1 python安装(略)2.2 安装pyinstaller打开DOS窗口输入以下命令:pip install pyinstalle ...

  7. python打包生成exe文件

    今天任务让做一个可以在Win上直接执行的脚本,百度了下原来可以生产.exe文件.神奇了 安装 pyInstaller pip install pyInstaller  进入要打包文件的目录 执行 py ...

  8. python打包成为exe文件

    pyinstaller 库的使用 PyInstaller是一个十分有用的第三方库,它能够在Windows.Linux.Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,Py ...

  9. python打包为exe文件

    1.安装 pyinstaller 包 pip3 install pyinstaller 2.进入python文件目录 进入Python程序文件夹py文件处,按住shift并且右键,在弹出的选项中点击& ...

随机推荐

  1. hihocoder 1176

    hihocoder 1176 题意:N,M.分别表示岛屿数量和木桥数量,一笔画 分析:欧拉路问题(给定无孤立结点图G,若存在一条路,经过图中每边一次且仅一次,该条路称为欧拉路) 欧拉路的条件 一个无向 ...

  2. 解析查询 queryString 请求参数的函数

    quety string 请求参数 本质上可以理解为一种序列化的格式,与 json 类似,它是一种字典类型的容器,里面可以保存键值对(key-value pair).只不过 querystring 这 ...

  3. Matlab imshow, image, imagesc 三者详细分析

    1.显示RGB图像 相同点:这三个函数都是把m*n*3的矩阵中的数值当做RGB值来显示的. 区别:imshow将图像以原始尺寸显示,image和imagesc则会对图像进行适当的缩放(显示出来的尺寸大 ...

  4. CodeForces 671C - Ultimate Weirdness of an Array

    题意: 给以一个定义, F(l, r) 的值表示序列 A[1:n]的子序列 A[1....(l-1),(r+1)...n] 之中 任意两个数的最大公约数的最大值. 求 Sum=∑i=1N∑j=1N(F ...

  5. Python———pandas数据处理

    pandas模块 更高级的数据分析工具基于NumPy构建包含Series和DataFrame两种数据结构,以及相应方法 调用方法:from pandas import  Series, DataFra ...

  6. WPF使用CefSharp嵌入网页

    1.点击项目应用下的管理NuGet程序包 2.在浏览中输入cefsharp-->查找 CefSharp.Wpf-->点击安装,等待安装完成 3.如果遇到一下问题将解决方案和项目都改成64位 ...

  7. 最长共公子序列(LCS)

    #include <iostream> #include <cstdio> #include <algorithm> using namespace std; ], ...

  8. 获取Ajax通信对象方法

    function getXHR() { // 该方法用于获取Ajax通信对象 var xhr = null; if (window.XMLHttpRequest != null && ...

  9. CF1065F Up and Down the Tree

    题解: 和正解方法不太一样 正解的大概意思就是先向下走可以走回来的 再走不能走回来的 能走回来的就是到这个儿子后最近的叶子可以返回的 然后这样可以O(n)计算 我自己做的时候以为这样不太能做.. 所以 ...

  10. java解析json的操作

    import java.io.FileNotFoundException; import java.io.FileReader; import com.google.gson.JsonArray; i ...