将Python文件编译为exe可执行程序

article/2025/10/29 9:52:46

    Python程序py格式文件的优点是可以跨平台,但运行必须有Python环境,没有Python环境无法运行py格式文件。有没有方法,用户不同安装Python就可直接运行开发的项目工程?答案是肯定的。这就涉及到需要将Python的.py格式文件编写的脚本编译成一个系统可执行文件,这可用PyInstaller来实现。

    PyInstaller支持在在Windows/Linux/Mac环境下将Python脚本打包成可执行程序,在没有Python环境的机器上运行。注意:需要在哪个操作系统平台一运行,需在相应的操作系统(或虚拟机)下编译。

1. 安装PyInstaller

    由于pyinstaller是第三方库,因此需要自行安装PyInstaller模块。官方网站:http://www.pyinstaller.rg或者国内镜像Links for pyinstaller、清华、阿里、豆瓣等。

    安装PyInstaller模块与安装其他Python模块一样,使用pip命令安装即可。

直接安装

pip install pyinstaller

用镜像安装(如豆瓣)

pip install pyinstaller -i https://pypi.douban.com/simple

    强烈建议使用“pip在线安装方式”安装PyInstaller模块,不要使用“离线包方式”安装,因为PyInstaller模块还依赖其他模块,pip在安装PyInstaller模块时会先安装它的依赖模块。

    安装结束,应该能看到如下输出结果:

Successfully installed pyinstaller-x.x.x

    其中的x.x.x代表PyInstaller的版本。

二、用PyInstaller生成可执行程序

    PyInstaller工具的命令语法如下:

pyinstaller <选项> <Python源文件>

    不管这个 Python 应用是单文件的应用,还是多文件的应用,只要在使用 pyinstaller 命令时编译作为程序入口的 Python 程序即可。

    PyInstaller工具是跨平台的,它既可以在 Windows平台上使用,也可以在 Mac OS X 平台上运行。在不同的平台上使用 PyInstaller 工具的方法是一样的,它们支持的选项也是一样的。

    先创建一个文件夹(目录),在该目录下创建一个.py文件(或复制一个.py文件)。

    然后转命令行窗口(cmb),进入到创建的文件夹(目录)下,执行如下命令:

pyinstaller -F xxx.py

    执行上面命令,将看到详细的生成过程。当生成完成后,将会在当前目录下生成一个dist目录,并在该目录下看到有一个xxx.exe文件,这就是使用PyInstaller工具生成的exe程序。

    在上面命令中使用了-F选项,该选项指定生成单独的exe文件,因此,在dist目录下生成了一个单独的xxx.exe文件(在Mac OS X平台上生成的文件没有后缀);与-F选项对应的是-D选项(默认选项),该选项指定生成一个目录(包含多个文件)来作为程序。

    PyInstaller常用选项如表1所示。

表1 PyInstaller支持的常用选项

选项

说明

-h--help

查看该模块的帮助信息

-F,-onefile

产生单个的可执行文件

-D,--onedir

产生一个目录(包含多个文件)作为可执行程序

-a,--ascii

不包含Unicode字符集支持。不包含编码,在支持unicode的Python版本上默认包含所有的编码

-d,--debug

产生debug版本的可执行文件

-w,--windowed,--noconsolc

指定程序运行时不显示命令行窗口(仅对Windows有效)

-c,--nowindowed,--console

指定使用命令行窗口运行程序(仅对Windows有效),默认

-i,--icon=<file.ioc>

将file.ico添加为可执行文件的资源,改变程序的图标(只对Windows系统有效)

-o DIR,--out=DIR

指定spec文件的生成目录。如果没有指定,则默认使用当前目录来生成spec文件

-p DIR,--path=DIR

设置Python导入模块的路径(和设置PYTHONPATH环境变量的作用相似)。也可使用路径分隔符(Windows使用分号,Linux 使用冒号)来分隔多个路径

-n NAME,--name=NAME

指定项目(产生的spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为spec的名字

-icon=<file.exe,n>

将file.exe的第n个图标添加为可执行文件的资源(只对Windows系统有效)

-v file,--version=file

将verfile作为可执行文件的版本资源(只对Windows系统有效)

-s,--strip

可执行文件和共享库将run through strip。注意Cygwin的strip往往使普通的win32 Dll无法使用

-X,--upx

如果有UPX安装(执行Configure.py时检测),会压缩执行文件(Windows系统中的DLL也会)(参见note)

    在表1中列出的只是PyInstaller模块所支持的常用选项,如果需要了解PyInstaller选项的详细信息,则可通过pyinstaller -h来查看。

三、设置打包后的版本信息

    编辑“版本信息文件”,此文件为纯文本文件,可用.txt扩展名,文件名可随意,如“file_version_info.txt”。典型的版本信息文件内容如下,中文注释是作者为方便读者学习而加的,注意红框中的项目。

说明:

    1.有关固定文件信息“ffi”的更多详细信息,请参阅:# http://msdn.microsoft.com/en-us/library/ms646997.aspx

    2. Translation中的语言代码,Locale ID信息见表2。

四、编译.py文件为.exe可执行文件

1、无版本配置文件

    下面以“漂亮玫瑰.py”为例,代码见:Python绘图——漂亮的玫瑰(源代码)

    创建一个文件夹(目录),将“漂亮玫瑰.py”复制到该文件夹,win+R,输入cmd进入命令行窗口,通过cd命令进入刚才创建的文件夹(目录),在该目录下执行如下命令:

pyinstaller -F 漂亮玫瑰.py

    上面命令中的“-F”选项指定生成单个的可执行程序。运行上面命令,在当前目录下生成了一个build、dist二个子目录,并在dist子目录下生成了一个“漂亮玫瑰.exe”文件。

    直接双击运行“漂亮玫瑰.exe”程序就会绘制“漂亮玫瑰”,读者可自行查看运行结果。

    在“漂亮玫瑰.exe”上单击右键,选“属性”,选“详细信息”页,信息显示如图1所示。

图1 直接编译后有exe文件无版本信息

2、有版本配置文件

    编辑“版本信息文件”,文件名随意,但需是文件文件,如“myVerInfo.txt”,内容如下:

VSVersionInfo(ffi=FixedFileInfo(filevers=(1, 0, 0, 23),prodvers=(1, 0, 0, 1),mask=0x3f,flags=0x0,OS=0x4,fileType=0x1,subtype=0x0,date=(0, 0)),kids=[StringFileInfo([StringTable('080403a8',[StringStruct('CompanyName', '张瑞林'),StringStruct('FileDescription', '绘制漂亮玫瑰'),StringStruct('FileVersion', '1.001'),StringStruct('InternalName', '漂亮玫瑰.exe'),StringStruct('LegalCopyright', '张瑞林版权所有'),StringStruct('OriginalFilename', '漂亮玫瑰.py'),StringStruct('ProductName', 'Python图形绘制系列—玫瑰花'),StringStruct('ProductVersion', '1.005')])]),VarFileInfo([VarStruct('Translation', [2052, 936])])]
)

    在该目录下执行如下命令:

pyinstaller -F --version-file=myVerInfo.txt 漂亮玫瑰.py

    执行过程如图2。

图2 执行pyinstaller -F --version-file=myVerInfo.txt 漂亮玫瑰.py

    此时会多一个“漂亮玫瑰.spec”文件,见图3。

 图3 执行pyinstaller -F --version-file=myVerInfo.txt 漂亮玫瑰.py后的文件夹

    “漂亮玫瑰.spec”中有一行“version='myVerInfo.txt'”,“漂亮玫瑰.spec”完整内容如下所示,注意红框内容。

     如果修改了.py文件“漂亮玫瑰.py”,再次编译只需用“pyinstaller -F 漂亮玫瑰.py”,如修改了版本信息文件“myVerInfo.txt”,则要删除.spec文件和build、dist二个子目录,重新用“pyinstaller -F --version-file=myVerInfo.txt 漂亮玫瑰.py”进行编译,否则可能得不到正确的版本信息。

    进入dist子目录,在“漂亮玫瑰.exe”上单击右键,选“属性”,选“详细信息”页,信息显示如图4所示。

图4 用版本信息文件编译后有exe文件的属性“详细信息”

    编译后exe文件显示的版本信息与“版本信息文件”对照,如图5所示。

图5 编译后有exe文件“详细信息”与“版本信息文件”对照


http://chatgpt.dhexx.cn/article/vAy5c2aD.shtml

相关文章

python:将.py文件转换成.exe文件

一、使用pip安装PyInstaller ①python3.x需要使用PyInstaller才能进行转exe文件。 ②在命令里安装PyInstaller 如下图&#xff0c;我是在Anaconda的python环境下&#xff0c;直接在Anaconda的命令行窗口下&#xff0c;用命令pip install pyinstaller安装的。 也可以如下图&a…

如何将python程序打包成exe文件

将py打包为exe文件需要依赖pyinstaller 首先介绍以下pyinstaller的命令 -F&#xff1a;打包后只生成单个exe格式文件&#xff1b;-D&#xff1a;默认选项&#xff0c;创建一个目录&#xff0c;包含exe文件以及大量依赖文件&#xff1b;-c&#xff1a;默认选项&#xff0c;使用…

只需三步即可将 Python 程序转换成 exe 文件

只需三步即可将 Python 程序转换成 exe 文件 用pyinstaller可以将.py文件转换成.exe格式&#xff0c;让你的程序在没有安装python环境的windows上运行。一、在cmd命令行执行安装pyinstaller工具 pip install pyinstaller二、下载安装pyinstaler运行时所需windows扩展&#xf…

将python文件转成exe文件

通过 pyinstaller 将 python 文件 转成 exe 文件 第一步&#xff1a;推荐使用pip工具安装 pyinstaller cmd-- pip install pyinstaller 第二步&#xff1a; 在目标文件夹地址栏直接输入&#xff1a;cmd&#xff0c;此操作可以不用记住文件路径名称&#xff0c;直接在黑窗命令…

Python打包为exe文件

前言 我们开发的python脚本一般都会用到一些第三方包&#xff0c;当别人需要用到我们编写的脚本时&#xff0c;如果我们将脚本文件发给他&#xff0c;他是不能直接运行去用的&#xff0c;他需要安装python解释器&#xff0c;配置相应的环境&#xff0c;这是相当麻烦的。那怎么…

【Python】如何将写好的Python代码打包成exe文件?

&#x1f194;作者简介&#xff1a;一名电子信息大学生. &#x1f4d1; 个人主页&#xff1a;爱学习的汪同学主页&#x1f440; &#x1f4eb; 如果文章知识点有错误的地方,请指正&#xff01;和大家一起学习进步 &#x1f525; 如果感觉博主的文章还不错的话&#xff0c;还请不…

python文件转为可执行文件(.exe)的详细步骤

目录 六一快乐&#xff01;&#xff01;&#xff01;&#xff01; 前言 安装所需要的工具 关于“pyinstaller” 安装“pyinstaller” 准备python文件 打包python文件 运行可执行文件 注意事项&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 关于依赖项…

一次学会两种方式将 python 打成 exe

python 可以做网站应用&#xff0c;也可以做客户端应用。但是客户端应用需要运行 py 脚本&#xff0c;如果用户不懂 python 就是一件比较麻烦的事情。幸好 python 有第三方模块可以将脚本可以转成 exe 执行。 有些人可能要问了既然可以做成网站&#xff0c;为啥还要做成客户端…

手把手教你把Python代码转成exe

【文末有福利】 很多刚入门的盆友都有疑惑怎么把Python代码转成可执行的exe&#xff1f;&#xff0c;这里行哥统一解决一下这个问题 1.在cmd里安装pyintsaller包2.在cmd里输入打包成exe的命令3.问题总结4. pyintsaller --help5. end 1.在cmd里安装pyintsaller包 第一步安装将Py…

微服务架构服务治理:服务注册中心+服务发布与注册+服务发现与调用+服务监控

目录 一、服务注册中心&#xff1a;注册中心核心功能实现策略 1.注册中心核心功能 2.注册中心实现策略 二、服务发布与注册 三、服务发现与调用 四、服务监控 基本思路&#xff1a;日志埋点 基本目标&#xff1a; 基本定位&#xff1a; 基本策略&#xff1a; 具体实…

zabbix 监控 windows 服务器

zabbix 监控 windows 服务器 步骤&#xff1a; 1.确定zabbix服务器的IP地址和 zabbix 版本 2.官网下载对应版本的zabbix-agent或 3.在要监控的windows服务器中安装zabbix-agent 4.在zabbix配置里添加windows主机第一步&#xff1a;确定zabbix服务器的IP地址和 zabbix 版本 如…

java监听服务器信息,java实时监控服务器状态

java实时监控服务器状态 内容精选 换一换 监控是保持弹性云服务器可靠性、可用性和性能的重要部分,通过监控,用户可以观察弹性云服务器资源。为使用户更好地掌握自己的弹性云服务器运行状态,公有云平台提供了云监控。您可以使用该服务监控您的弹性云服务器,执行自动实时监控…

使用Grafana+Prometheus配置服务器监控

文章目录 前言一、Grafana安装和配置1.安装2.登录 二、Prometheus安装和配置1.安装1.1 配置系统服务 2.查看服务 三、node_exporter安装和配置1.安装1.1 配置系统服务 2.修改prometheus.yml配置3.查看服务 四、Grafana配置prometheus1.配置数据源2.导入首页模板 前言 最近项目…

springboot2.x中的服务监控

想给服务添加一个监控&#xff0c;看看网上各位前辈的&#xff0c;基本都是基于springboot1.x的&#xff0c;springboot升级到2.0以后和1.x还是有很多不一样的&#xff0c;那么2.0以后怎么使用admin监控呢&#xff1f; 先看下图的managment.security.enable&#xff0c;现在已经…

cacti监控服务器性能,cacti监控服务器

cacti监控服务器 内容精选 换一换 博文目录一、Cacti1、Cacti简介2、cacti的作用和特点3、cacti监控的数据类型二、安装配置Cacti监控服务器1、配置LAMP环境2、安装SNMP和RRDtooll工具3、部署英文cacti连接mariadb4、客户端访问英文cacti的WEB界面5、部署中文cacti连接maria 来…

Grafana + prometheus在Centos搭建服务器监控系统(三)--配置监控Nginx

部署并配置nginx-module-vts 参考我之前的文章&#xff1a; Linux下Nginx配置nginx-module-vts_allen的博客-CSDN博客 配置nginx-vts-exporter exporter会收集nginx性能指标的JSON格式数据&#xff0c;并汇总后暴露监控接口给Prometheus。 cd /data/program wget -c https…

shell脚本实现服务监控报警并重启

第一篇 使用crontab指令的shell脚本实现服务监控报警重启 这两天做了一个服务监控报警重启的脚本。本质就是用一个shell命令去监控服务状态&#xff0c;如果宕机就会自动重启&#xff0c;并向指定邮箱发送邮件对管理人员进行提醒&#xff0c;再使用crontab命令设置每隔一分钟…

Zabbix +Grafana 服务器监控体系

无监控&#xff0c;不运维。废话不多说&#xff0c;下面都是干货 官方地址&#xff1a; https://www.zabbix.com/cn/download 声明 使用的是zabbix6.0.7版本。Mysql 8.0.26。演示使用的系统镜像为rocky linux 8.6 --------------------------------------------Zabbix--------…

SpringBoot整合Admin服务监控(图文详细)

SpringBoot整合Admin服务监控组件 1 SpringBootAdmin 简介 1.1 概述 SpringBootAdmin 是一个非常好用的监控和管理的开源组件&#xff0c;该组件能够将 Actuator 中的信息进行界面化的展示&#xff0c;也可以监控所有 Spring Boot 应用的健康状况&#xff0c;提供实时警报功…

windows下的文件服务器监控

windows下的文件服务器监控 一、使用Windows自带的管理工具进行查看当前服务器连接的用户及打开的文件&#xff0c;但是该功能比较简单&#xff0c;无法对文件进行监控&#xff0c;比如什么时间哪个用户连接到共享文件夹对该文件夹的文件进行过什么操作。 二、使用工具软件 …