本文章内容的视频版本:
为什么这么做?
最大的好处,就是可以直接一个压缩包分发给别人,不需要再安装Python,点击就能运行。
– 有自己的icon
– 一定程度的保护代码
通过将Python项目打包成可执行文件(EXE),我们可以方便地分享程序,并且无需担心用户的Python环境配置。此外,自定义图标和代码保护功能也是打包的一大亮点。
用什么打包?
将Python工程打包成EXE文件,可以使用以下几种方式:
1. PyInstaller
安装:
bash
pip install pyinstaller
打包:
bash
pyinstaller --onefile your_script.py
这将生成一个单独的可执行文件 your_script.exe,位于 dist 目录中。
常用选项:
- –onefile: 生成单个可执行文件
- –windowed或–noconsole: 打包为窗口应用程序(不显示控制台)
2. cx_Freeze
安装:
bash
pip install cx_Freeze
编写setup.py:
创建一个 setup.py 文件,内容如下:
python
from cx_Freeze import setup, Executable
setup(
name = "your_program_name",
version = "0.1",
description = "Your program description",
executables = [Executable("your_script.py")]
)
打包:
bash
python setup.py build
生成的EXE文件位于 build 目录中。
3. Py2exe
安装:
bash
pip install py2exe
编写 setup.py:
创建一个 setup.py 文件,内容如下:
python
from distutils.core import setup
import py2exe
setup(console=['your_script.py'])
打包:
bash
python setup.py py2exe
生成的EXE文件位于 dist 目录中。
4. Nuitka
Nuitka不仅可以将Python代码编译为C++代码,还可以生成可执行文件。
安装:
bash
pip install nuitka
编译:
bash
nuitka --follow-imports --standalone your_script.py
生成的EXE文件位于当前目录的 your_script.dist 文件夹中。
总结
选择哪种工具可以根据具体需求决定:
- PyInstaller:常用且支持多种选项,适合大部分应用。
- cx_Freeze:灵活性高,适合复杂项目。
- Py2exe:适合简单项目,但仅支持Windows。
- Nuitka:适合需要性能优化的项目。
每种方法都有其优势,可以根据项目的需求和个人偏好进行选择。
如何打包?
- 安装PyInstaller:
- 使用PyInstaller打包:
bash
pip install pyinstaller
bash
pyinstaller your_script.py
为什么有错误,怎么办?
1. Gradio UI需要手动添加Gradio模块:
找到对应的spec文件,添加:
python
module_collection_mode={'gradio':'py',}
2. 参数调用的错误:
python
def parse_args():
command_line_args = SimpleNamespace(
llama_checkpoint_path="checkpoints/fish-speech-1.2",
decoder_checkpoint_path="checkpoints/4x1024-42hz-generator.pth",
decoder_config_name="firefly_gan_vq",
device="cuda",
half=False,
compile=False,
max_gradio_length=0,
)
return command_line_args
3. 缺少资源:
确保所有必要的资源文件都包含在打包过程中,并且路径正确。如果遇到缺少资源的错误,检查资源文件是否在项目的正确位置,以及打包工具的配置是否正确。
支持牛哥
送人玫瑰,手有余香,可以通过下面的方式支持牛哥
1. 开通 Youtube 会员:
最简单直接的方式,一杯咖啡的开销,成为牛哥背后的男(女)人
开通方法:
点击任意牛哥视频描述区的加入按钮 或者 点击牛哥描述区的连接:
大陆地区可以使用日本或者台湾区的梯子,否则可能看不到加入按钮
2. 为爱发个电:
爱发电平台: https://afdian.com/a/niugee