Pyinstaller (python打包为exe文件)

需求分析:

  • 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的时候去掉。

原文地址:https://www.cnblogs.com/colden/p/10654094.html

时间: 2024-10-11 08:26:39

Pyinstaller (python打包为exe文件)的相关文章

python打包成.exe文件

1. 在PyCharm下安装pyinstaller 2. 在Terminal下输入:"pyinstaller -F -w *.py" 就可以制作出exe.生成的文件放在同目录dist下.     # 这里的*.py换成实际的py文件 -F(注意大写)是所有库文件打包成一个exe,-w是不出黑色控制台窗口. 不加-F参数生成一堆文件,但运行快.压缩后比单个exe文件还小一点点. 加-F参数生成一个exe文件,运行起来慢. 参考文档:https://blog.csdn.net/kingha

python打包成exe文件

1.安装 pyinstaller pip install pyinstaller 2.进入项目目录,执行以下命令    -F :生成单一的exe文件   -w:生成的exe打开后不带有黑框 pyinstaller -F -w VIP电影破解.py 原文地址:https://www.cnblogs.com/zhouyongfeng/p/11074110.html

python进阶--打包为exe文件

一.Python打包为EXE文件有不少方案,比较常用的有下面两种方式: 1.使用py2exe 详细介绍:http://www.cnblogs.com/jans2002/archive/2006/09/30/519393.html 2.使用Pyinstaller 本文重点介绍该方式打包. 二.Pyinstaller使用 简介:PyInstaller可以将Python程序打包成Windows(当然也包括Linux, Mac OS X, Solaris and AIX)下可执行的EXE文件,目前支持p

批量生成二维码打包成exe文件

需求:  根据url 和 文件名称 生成二维码   将二维码放到背景图上合成一张二维码 思路: 使用qrcode库 获取二维码 保存本地  全部完成后 与本地背景图合成   最后使用pyinstaller将python打包成exe文件 # -*- coding: utf-8 -*- import urllib; import os import time import threadpool from PIL import Image import qrcode path = os.getcwd(

Pyton项目打包成exe文件

Python项目打包成exe文件 1 系统环境 windows版本: Win7 64位 python环境:Anaconda python版本:3.6 64位 pyinstaller版本:3.5 1 安装pyinstaller库 Pyintaller打包时,会将解释器中所有的包默认一起打包,结果打包出的exe文件非常大.所以,建议使用Anaconda的虚拟环境来安装程序需要的包,然后在该虚拟环境中进行打包. 打开,Anaconda Prompt,切换到新建的虚拟环境安装pyinstaller和程序

Python打包成exe

有个好网站http://www.lfd.uci.edu/~gohlke/pythonlibs/ , 这个网站可以下载许多非官方的python库的安装包. 1.首先去这个网站下载cx_freeze安装包后安装. 2.在C:\PythonXX\Scripts\ 下可以看到cxfreeze-quickstart.bat, XX为版本号 3.运行cxfreeze-quickstart.bat, 根据向导生成setup.py setup.py类似如下: importsys fromcx_Freeze im

python打包成.exe工具py2exe0-----No such file or directory错误

转自:http://justcoding.iteye.com/blog/900993 一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序. py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序.py2exe是发布在开源许可证下的. 二.安装py2exe 从h

将 Python3 文件打包成 exe 文件

我们用 Python 写好的代码,如何给别人在没有配置 Python 环境的情况下直接使用呢?尤其是面向 windows 众. 因为 Python 是一门解释性的语言,离开了 Python 解释器,Python 无法执行.但是我们还有相应的解决方案,答案就是打包成 .exe 可执行文件 当然这篇正文前废话两句,一是看过之前网上的一些吐槽,因为没有学过编译原理,所以也不能不懂乱讲,姑且称之为半引用吧: Python 的哲学是所见即所得,脚本类语言也注定了其加密性不如其他编译生成的语言(比如C++,

VS2010 打包生成exe文件后 运行安装文件出现 TODO:<文件说明>已停止工作并已关闭

VS2010 打包生成exe文件后  运行安装文件出现  TODO:<文件说明>已停止工作并已关闭 TODO: <文件说明>已停止工作 原因: 打包的时候在文件系统中建立了空文件夹,那么该空的文件夹就不会被加载进去,导致程序运行用到该文件夹的时候就会出现了该问题. 解决方法: 如建立了文件Calibration 那么先随便加载一个文件(如:3.csv)文件进去  不让它为空就行了