一.安装环境

1.1安装python环境

python官网地址:https://www.python.org/downloads/windows/

高能总结:
1.python环境安装务必安装python3+版本,强烈建议去官网下载安装包(window、mac),以避免环境变量的配置、运行中各种奇怪异常;
2.安装包需要安装3.8.X的版本;如果安装的是3.10.X版本,经测试发现在安装打包环境时提示包版本问题,导致报错、、、,未减少麻烦,所以直接安装3.8.X版本;

python的安装过程,一路下一步即可(安装过程中注意勾选添加的环境变量复选框)。

1.2检查python环境是否安装成功;

python -V #会打印python的版本号信息说明安装成功

1.3安装虚拟环境

pip install pipenv

1.4建立虚拟环境

pipenv install

1.5进入虚拟环境(上一步可省略,因为没有虚拟环境的话会自动建立一个)

pipenv shell

1.6安装项目中依赖的模块

pipenv install moviepy requests opencv-python Pillow np

1.7打包的模块也要安装

pipenv install pyinstaller

::: block-1

高能总结:

为什么需要安装虚拟环境?

1.避免依赖冲突:虚拟环境允许您在不同的项目之间隔离依赖关系。这可以防止不同项目所需的依赖项之间的冲突,确保每个项目都可以在其自己的环境中正常工作。在将应用程序打包为可执行文件时,确保它只包含了项目所需的依赖项,而不是系统范围的依赖项。

2.版本控制:虚拟环境使您能够控制项目所使用的 Python 版本。这对于确保应用程序在不同的 Python 版本下都能正常工作非常重要。当您打包应用程序为可执行文件时,可以明确指定要使用的 Python 版本,以确保兼容性。

3.减小可执行文件大小:如果您在虚拟环境中只安装了项目所需的依赖项,那么打包生成的可执行文件通常会更小,因为它只包含了必要的文件和库。这可以减小可执行文件的大小,使其更容易传输和部署。

4.清晰的项目结构:使用虚拟环境可以保持项目结构的清晰和整洁。您可以将所有项目相关的依赖项隔离在一个目录中,使项目更容易维护和管理。

5.更好的可移植性:通过将虚拟环境与打包工具一起使用,您可以创建一个独立于系统的可执行文件,这意味着您可以在不同的操作系统上运行它,而不必担心依赖项问题。
:::

二.打包

pyinstaller -F -c main.py
或者
pyinstaller main.spec

::: block-1

解释:

main.py 是你的代码入口文件;

-c 表示exe运行时需要打开一个黑窗口;

首次运行时可以使用pyinstaller -F -c main.py 命令,每次运行该命令都会重新生成一个xxx.spec配置文件。

如果已经存在xxx.spec配置文件,就用pyinstaller xxx.spec命令,原因是xxx.spec文件中可能已经添加了已经配置好的东西,无需在命令行中添加各种打包配置了;

常用参数 含义

-i 或 -icon 生成icon

-F 创建一个绑定的可执行文件

-w 使用窗口,无控制台

-C 使用控制台,无窗口

-D 创建一个包含可执行文件的单文件夹包(默认情况下)

-n 文件名
:::

资源目录的配置

pyinstaller 工具打包时默认只会打包项目中的py文件,但实际项目中可能存在其它文件例如,images文件夹、audios文件夹、其它资源文件夹,这类文件夹不配置的话,在运行exe时会提示找不到目录;

修改xxx.spec文件的datas,举例,在源码中的main.py文件同级目录下存在两个资源文件夹images、audios,里面分别存放图片、音频,配置如下配置:

a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=[(".\\images\\*.*",'.\\images'), ('.\\audios\\*.*', '.\\audios')],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
)

datas是一个列表,可以配置多个目录,每一个目录都要用小括号包裹起来,注意windows中使用的是反斜杠;

如果打包后的dist文件夹中没有images、audios(与xxx.exe可执行文件同级)文件夹,此时手动新建这两个文件夹即可。

高能总结:以上打包过程中遇到两个坑,第一个是必须用3.8.X版本的python否则安装pyenv时提示找不到python3.8环境;第二个是资源包无法自动新建,此时需要手动新建资源包;