#author("2024-07-17T08:40:56+08:00","default:Admin","Admin") #author("2024-07-17T10:07:21+08:00","default:Admin","Admin") [[Python]] &color(red){※This article is based on Python 3.7.3}; #contents * 概要 [#dd2f32bb] ** 为什么要将 Python 程序打包为 exe 可执行文件 [#s65e8ed7] 众所周知,Python 程序的运行必须要有 Python 的环境,但是程序编出来是用的,如果是给别人用,而他/她的电脑上又没有 Python 程序运行的环境怎么办呢?总不能让他/她去安装一个吧?这时我们就要将 Python 程序打包为 exe 文件。这样,在 Windows 平台下,就可以直接运行该程序,不论有没有 Python 环境。 ** 为什么 Python 程序不能直接运行呢 [#i13850a7] Python 是解释性语言,它与 C 或者 C++ 等编译型语言不同,C 或者 C++ 都是要编译再运行的,(编译产生的最终文件就是 exe 文件),Python 本质上只是对一段文本进行解释,类似于浏览器解析 html 文档,是不会产生任何 exe 文件的。 * 安装 Pyinstaller [#zb12a9ac] 这个用 pip 模块直接下载就行,直接就下载在本次需要打包的 Python 环境下(base 环境) pip install Pyinstaller * 使用 [#h40033b0] 命令格式如下 Pyinstaller -option1 -option2 -... 要打包的文件 |参数选项|描述|h |-F, -onefile|只生成一个单个文件(只有一个 exe 文件)| |-D, -onedir|打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,这样代码易于维护| |-K, –tk|在部署时包含 TCL/TK| |-i -icon=<FILE.ICO>|将 file.ico 添加为可执行文件的资源(只对 Windows 系统有效),改变程序的图标| 这里简单地举几个例子,让大家明白这个参数怎么写。 # 这一般是用来打包界面化的程序的,如用tkinter、Pyqt5等制作的程序。 # -w 的意思就是exe运行的时候不弹出那个命令行(黑窗口) #codeprettify{{ Pyinstaller -F -w somefile.py# 这一般用来添加exe的图标 Pyinstaller -F -i someicon.ico somefile.py }} * Troubleshooting [#v0d64200] ** 打包后报错提示有些文件找不到 [#w315d3c3] #codeprettify{{ Traceback (most recent call last): File "fastwhisper3.py", line 25, in <module> segments, info = model.transcribe(wavfile, beam_size=5, language="zh", vad_filter=True, vad_parameters=dict(min_silence_duration_ms=1000)) File "faster_whisper\transcribe.py", line 333, in transcribe File "faster_whisper\vad.py", line 74, in get_speech_timestamps File "faster_whisper\vad.py", line 229, in get_vad_model File "faster_whisper\vad.py", line 246, in __init__ File "onnxruntime\capi\onnxruntime_inference_collection.py", line 419, in __init__ File "onnxruntime\capi\onnxruntime_inference_collection.py", line 472, in _create_inference_session onnxruntime.capi.onnxruntime_pybind11_state.NoSuchFile: [ONNXRuntimeError] : 3 : NO_SUCHFILE : Load model from C:\Users\ADMINI~1\AppData\Local\Temp\_MEI46842\faster_whisper\assets\silero_vad.onnx failed:Load model C:\Users\ADMINI~1\AppData\Local\Temp\_MEI46842\faster_whisper\assets\silero_vad.onnx failed. File doesn't exist [4424] Failed to execute script 'fastwhisper3' due to unhandled exception! }} 使用 --hidden-import 参数也提示找不到 >pyinstaller --hidden-import WhisperModel fasterwhisper.py # 找不到下面的 12304 ERROR: Hidden import 'WhisperModel' not found 这里的import不要使用代码中 import 后面的模块名,而是应该使用 上面报错里面的 fast_whisper 这个。 * 其他的打包工具 [#cbe59c2a] ** py2exe [#z7957e0a] py2exe可以将Python代码打包成Windows可执行文件。 使用py2exe打包Python代码也很简单,只需要在命令行中输入以下命令: python setup.py py2exe 这将生成一个Windows可执行文件。 ** py2app [#e7369322] py2app可以将Python代码打包成MacOS可执行文件。 使用py2app打包Python代码也很简单,只需要在命令行中输入以下命令: python setup.py py2app 这将生成一个MacOS可执行文件。 ** cx_Freeze [#s57f5ba2] cx_Freeze可以将Python代码打包成独立的可执行文件。 使用cx_Freeze打包Python代码也很简单,只需要在命令行中输入以下命令: cxfreeze xxx.py --target-dir distflord 这将生成一个可执行文件,可以在Windows、Linux和MacOS上运行。 #hr(); コメント: #comment_kcaptcha