桌面应用打包:pyinstaller

这篇具有很好参考价值的文章主要介绍了桌面应用打包:pyinstaller。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 背景

在使用python开发一些小工具时,如果其他人电脑中没有python环境或者没有安装相应的第三方库,是没办法运行的,而要求对方安装又不现实,尤其是对方不是技术人员,因此如何将一个独立的python程序,使它成为成为一个不用考虑环境,双击即可运行的桌面应用呢?使用pyinstaller打包是一个不错的选择。

2 什么是pyinstaller

pyinstaller是一个支持跨平台使用的第三方库,它可以将脚本执行所需的模块和库,自动分析、收集并生成一个文件夹或者可执行文件。

以下示例使用windows环境,由于pyinstaller的跨平台性,与类unix环境命令一样,只是最终生成的可执行文件不一样。

3 如何安装

安装pyinstaller模块与安装其他python模块一样,使用pip命令安装即可。
pip install pyinstaller
安装输出结果:

其中的 altgraph、future等代表 PyInstaller 模块依赖环境。

4 如何使用

4.1 常用命令介绍

pyinstaller + 选项 + python入口源文件

主要选项包括:

  • -F 打包成一个exe文件(如果是多个py文件,下面有解决办法)
  • -D 自动创建一个包含桌面应用文件的目录,包括所有运行依赖文件(默认选项)
  • -w 指定程序运行时,不显示命令行窗口(仅对windows有效)
  • -i + ico路径 可以更换应用图标(如果是当前文件夹下,不用添加ico路径)
  • -d 产生debug版本的exe文件
  • -o 指定.spec文件生成目录,如果没有指定,将会在当前根目录下输出
  • -n 指定.spec文件名字,如果省略,主文件名将作为.spec的文件名字
  • -p 设置导入路径,可以使用路径分隔符(windows是分号,类unix是冒号)

4.2 常用方式举例

4.2.1 打包成单个文件

使用以下命令将会使python脚本,打包成为一个exe文件。
pyinstaller -F -w -i “./dian_128.ico” start_dian.py

其中:

  • -F 命令打包成单个文件
  • -w 无命令行窗口
  • -i 指定exe文件icon图标

执行成功后,将会在根目录生成两个文件夹,其中“build”文件中包含的是所有依赖文件,“dist”文件夹中存放着本次生成的exe文件。

4.2.2 打包成文件夹

使用以下命令将会使python脚本,打包成为一个文件夹。
pyinstaller -D -w -i “./dian_128.ico” start_dian.py

其中:

  • -D 命令打包成一个文件夹
  • -w 无命令行窗口
  • -i 指定exe文件icon图标

命令行执行成功后,将会在dist目录下生成一个start_dian的子目录,该目录中包含了大量的.dll文件和.pyz文件,都是exe文件的支撑文件。

4.3 使用.spec文件配置编译

上面讲解的都是通用版本,不太灵活,如果想要加入新的资源,或每次编译不想输入很长的命令,可以使用.spec文件,进行定制化配置编译。

4.3.1 生成.spec文件

使用上面的方式进行编译后,如未指定.spec生成目录,会在当前根目录生成一个与编译py文件同名的.spec文件;
或使用命令pyi-makespec -F start_dian.py,将会直接生成.spec文件;

4.3.2 spec文件内容介绍

打开spec文件

这里仅对涉及到的几个关键变量进行解释:

1.Analysis:

  • [‘start_dian.py’]:是主文件以及全部依赖文件,如果依赖文件都在同一目录下可以不写;
  • oathex:项目的绝对路径;
  • datas:添加资源文件,例如文件夹、图片、excel等等,以元组入参,第一个参数为原始路径,第二个参数为编译后的目标路径;

2.EXE:

  • console:是否开启命令行,默认为True(开启);
  • icon:编译出exe可执行文件产物的图标,必须使用绝对路径;
  • name:EXE内和COLLECT内的name都是编译后的文件名,默认与编译主文件同名;

4.3.3 spec文件编译

配置好的spec文件,执行命令进行编译,不再需要其他参数:
pyinstaller start_dian.spec

4.3.4 以下四种情况,修改spec文件比较好:

  1. 当您需要将资源文件与exe文件捆绑在一起时;
  2. 当您的依赖文件包括.dll或.so文件时;
  3. 当您运行exe需要运行参数时;
  4. 当您需要合并多程序包成为通用模块时;

5 常见问题

1.多文件如何打包

  • 在.spec文件中Analysis参数hiddenimports中添加导入模块名称,修改后,可再次进行打包,将会解决exe文件依赖包找不到的问题;
  • 在命令中使用-p 主文件 + -p 引入文件 …,可以直接生成exe文件。

2.exe文件过大

  • 安装python虚拟环境;
  • 导入包时,使用form + 包名 + import + 功能函数,不要直接import + 包名。

3.出现莫名其妙的错误

  • python文件所在的全路径,尽量不要有中文存在。

4.打包成一个文件夹后,发送给其他人无法使用

  • 需要将dist下面的文件夹整体发送,保持exe文件与dist下面文件夹的路径不变。

5.运行exe文件后,没有达到预期效果

  • 文件报错了,重新打包文件,使用控制台(去掉-w参数),将会在控制台显示程序运行过程与打印错误。

6.python脚本主要是命令行输出,但是程序执行完后就退出无法查看输出信息

  • 在python脚本最后一行添加命令:os.system(“pause”)或者raw_input(“输出任意按键即可退出”)。

作者:京东物流 骆铜磊

来源:京东云开发者社区 自猿其说Tech文章来源地址https://www.toymoban.com/news/detail-632851.html

到了这里,关于桌面应用打包:pyinstaller的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用pyinstaller打包python文件遇到的问题和解决方法

    情况1 :当所使用的代码都在一个.py文件中,且该代码中没有调用其他文件和import自己写的函数时 例如: 打包下面这个检查输入的ip是否符合规范的程序ipcheck.py,程序中只Import了自带的库re 下载pyinstaller 使用Pyinstaller打包。先进入该程序所在的文件夹,在文件资源管理器的文

    2024年02月06日
    浏览(40)
  • 采用pycharm在虚拟环境使用pyinstaller打包python程序

    一年多以前,我写过一篇博客描述了如何虚拟环境打包,这一次有所不同,直接用IDE pycharm构成虚拟环境并运行pyinstaller打包 之前的博文: 虚拟环境venu使用pyinstaller打包python程序_伊玛目的门徒的博客-CSDN博客 第一步: pycharm建立项目,创建一个虚拟环境。   第二步: 在项目

    2024年02月12日
    浏览(36)
  • 科普:python怎么使用Pyinstaller模块打包成可执行文件

    创建个虚拟环境来打包,以免把整个系统的乱七八糟的pip的都打包进去,建议每个项目创建对应的虚拟环境。 比如: conda create -n myenv python=3.10 PS:还需要安装项目依赖的其他模块,建议用requirements.txt文件安装 -h,–help 查看该模块的帮助信息 -F,-onefile 产生单个的可执行文

    2024年02月08日
    浏览(51)
  • 【Python】conda虚拟环境下使用pyinstaller打包程序为exe

    第一点是,pyinstaller打包需要指定程序中使用的库的路径,新手在这一点上很容易出现问题,导致打包后的exe程序执行的时候显示 缺少模块 。这个问题可能并不能通过简单地指定路径来解决。 第二点就是使用虚拟环境本身的好处了: 可以创建多个不同的Python环境,每个环境

    2024年02月09日
    浏览(48)
  • 使用pyinstaller将具有多个python文件的项目打包为exe(含依赖库)

    1、将需要打包有python文件放到一个文件夹,例如下图所示的Demo文件夹,其中ClickEveryDay.py为主文件,telegram.ico为图标文件。   2、生成主函数对应的spec文件 命令:在Demo文件夹路径下使用:pyi-makespec ClickEveryDay.py,将产生一个ClickEveryDay.spec文件。 3、修改ClickEveryDay.spec文件:加

    2024年02月11日
    浏览(46)
  • Python使用pyinstaller打包成.exe文件执行后闪退的解决办法

    1、程序在PyChram中运行正常,但是用pyinstaller将程序打包成.exe文件执行后闪退; 2、使用cmd在在.exe文件处./执行后,发现提示 No module named ‘ttkbootstrap’ ,没有ttkbootstrap模块; 3、在工程文件的venvLibsite-packages下,确实存在ttkbootstrap包;这个包不知什么原因没打包进.exe文件,

    2024年02月12日
    浏览(42)
  • pyinstaller打包exe应用程序详细教程

    1、PyInstaller简介 PyInstaller是一个跨平台的Python应用打包工具,支持 Windows/Linux/MacOS三大主流平台,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,从而允许最终用户在无需安装 Python 的情况下执行应用程序。 PyInstaller 制作出来的执行文件并不是跨平台的,如果需

    2024年02月11日
    浏览(54)
  • Python使用最新版pyinstaller将项目或程序打包成exe或者mac中的可执行文件

    pyinstaller 能够在 Windows、Linux、Mac 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。 PyInstaller 支持 Python 2.7 和 Python 3.3+。可以在 Windows、Mac 和 Linux 上使用,但是并不是跨平台的,

    2024年02月08日
    浏览(42)
  • Python3.9使用最新版pyinstaller将项目或程序打包成exe或者mac中的可执行文件

    pyinstaller 能够在 Windows、Linux、Mac 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。 PyInstaller 支持 Python 2.7 和 Python 3.3+。可以在 Windows、Mac 和 Linux 上使用,但是并不是跨平台的,

    2024年02月09日
    浏览(52)
  • python打包之pyinstaller(打包成exe)

    直接pip在线安装 常用指令 -h,–help 查看该模块的帮助信息 -F,-onefile 产生单个的可执行文件 -D,–onedir 产生一个目录(包含多个文件)作为可执行程序 -w,–windowed 指定程序运行时不显示命令行窗口(仅对 Windows 有效) 建议采用生成目录、去除黑框. 生成目录,不易出错。

    2024年02月04日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包