Python生成exe文件的神器——PyInstaller (包括传参交互)
创始人
2025-05-31 11:02:54
0

现在很多测试同学写一些小工具都会选择python,直接运行py文件就可以轻松实现自己想要的功能啦!但是大家想没想过,对于没有python环境的同学或者是根本不懂编码的同学来说,该如何运行这些py脚本呢?我们可以把py文件转化成各个系统支持的可执行文件。

在这里,我们介绍一下PyInstaller(本文重点讲解如何生成exe文件)!

PyInstaller是一个在 Windows、GNU/Linux、macOS、FreeBSD、OpenBSD、Solaris 和 AIX 下将 Python 程序冻结(打包)为独立可执行文件的程序。与类似工具相比,它的主要优点是 PyInstaller 与 Python 3.7-3.10 一起工作,由于透明压缩,它构建了更小的可执行文件,它是完全多平台的,并使用操作系统支持加载动态库,从而确保完全兼容。

Pyinstaller安装

pip install pyinstaller

安装成功后在cmd窗口中输入pyinstaller

–h ,输出如下信息证明安装成功

usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
[--add-data ]
[--add-binary ] [-p DIR]
[--hidden-import MODULENAME]
[--collect-submodules MODULENAME]
[--collect-data MODULENAME] [--collect-binaries MODULENAME]
[--collect-all MODULENAME] [--copy-metadata PACKAGENAME]
[--recursive-copy-metadata PACKAGENAME]
[--additional-hooks-dir HOOKSPATH]
[--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]
[--splash IMAGE_FILE]
[-d {all,imports,bootloader,noarchive}]
[--python-option PYTHON_OPTION] [-s] [--noupx]
[--upx-exclude FILE] [-c] [-w]
[-i ]
[--disable-windowed-traceback] [--version-file FILE]
[-m ] [--no-embed-manifest] [-r RESOURCE]
[--uac-admin] [--uac-uiaccess] [--win-private-assemblies]
[--win-no-prefer-redirects] [--argv-emulation]
[--osx-bundle-identifier BUNDLE_IDENTIFIER]
[--target-architecture ARCH] [--codesign-identity IDENTITY]
[--osx-entitlements-file FILENAME] [--runtime-tmpdir PATH]
[--bootloader-ignore-signals] [--distpath DIR]
[--workpath WORKPATH] [-y] [--upx-dir UPX_DIR] [-a]
[--clean] [--log-level LEVEL]
scriptname [scriptname ...]

重点解释

-h 该模块的help信息

-F 生成一个可执行文件

-D 生成一个目录(包含多个文件)作为可执行文件

-w 运行exe时,不显示命令行窗口(仅对Windows有效)

-i 该参数后跟可执行文件的icon图标路径

–distpath 该参数后跟可执行文件的路径

-n 该参数后跟可执行文件的新名字

-p pyinstaller可以将代码import导入的依赖包进行打包,有时候自己开发的代码,可能会被忽视,那就需要通过-p 参数手动引入了

输入以下命令 Pyinstaller -F -i icon.ico demo.py

生成文件目录如下:

生成的exe文件保存到上图中的dist 目录

Pyinstaller打包多个py文件

pyinstaller -F主文件 -p [其他文件1] -p [其他文件2]

python脚本内容输出到cmd窗口

有的同学可能会问,如果我想在程序中输出的内容在cmd窗口中显示该如何操作呢?很简单在程序中正常使用print 即可,但是在打包exe可执行文件的时候一定不要使用 –w参数

在cmd中进行传参交互

通过sys.argv[]来传递py文件的参数

创建一个python文件,win_demo.py ,代码如下:

import sys
def add(a, b):c = a + breturn c
if __name__ == '__main__':print('loaded...')try:a = add(sys.argv[1], sys.argv[2])print('result is:' + str(a))except:print('need 2 argument,please try again')print('close...')

然后使用下面的命令生成exe文件

Pyinstaller -F win_demo.py

在cmd中 运行如下命令,发现 参数1 和 3 已经成功传入了exe程序,并输出了py脚本中print的相关文字信息

C:\Users\Administrator>D:\py_demo\win_demo1\dist\win_demo.exe 1 3

loaded...

result is:13

close...

注意:我们在cmd中运行命令,经常会输入错误的参数,这个时候,我们就需要在py代码中通过异常机制进行捕获处理(代码中的 try…except)

我们运行如下命令,就会触发异常机制

C:\Users\Administrator>D:\py_demo\win_demo1\dist\win_demo.exe

loaded...

need 2 argument,please try again

close...

相关内容

热门资讯

安全政策方面,澳应破除“臆想症... 陈 弘 当地时间6月5日,澳大利亚前总理特恩布尔在接受媒体采访时表示,自己执政时批准岚桥集团租借达尔...
中央巡视期间,退休8年的王筠权... 据中央纪委国家监委驻国家金融监督管理总局纪检监察组、四川省纪委监委消息:原四川银监局党委书记、局长王...
新条例赋能种业振兴 第二届中原... 本报讯(三农全媒体中心记者 马丙宇 通讯员 张萍萍)盛夏时节,麦浪翻金。6月7日,第二届中原农谷知识...
我们放羊的地方就是中国的领土!... 撰文丨董鑫 塔什库尔干塔吉克自治县位于新疆帕米尔高原,这里“一县通三国”——塔吉克斯坦、巴基斯坦和...
巴黎呼吁赋予塞纳河“法律人格” 参考消息网6月7日报道据法新社6月4日报道,法国希望赋予塞纳河合法权利,以便在法庭上更好地捍卫这条世...
香港《稳定币条例》将于8月1日... 6月6日,香港政府新闻网显示,香港特别行政区政府在宪报刊登《稳定币条例(生效日期)公告》,指定202...
多半、山里来的土……商标“擦边... 封面新闻记者 姚箬君 山里来的土鸡蛋,“山里来的土”是商标;壹号土猪,“壹号土”是商标;配料表里显示...
海关律师、走私辩护律师邵丹:走... 近日,石家庄海关查获一起旅客走私卷烟进境案。 某日,石家庄海关所属石家庄机场海关关员在监管一架入境航...
省级未成年人法律援助工作站揭牌... 6月5日上午,省级未成年人法律援助工作站揭牌仪式在团省委举行。团省委副书记赵静与省司法厅党委委员、副...
每周股票复盘:芯源微(6880... 截至2025年6月6日收盘,芯源微(688037)报收于97.03元,较上周的91.33元上涨6.2...