将Python程序转为exe程序

安装pyinstaller

首先需要安装打包需要用到的库——pyinstaller,方法很简单直接使用pip安装即可。
pip install pyinstaller

项目打包

  1. 把所有静态资源转移到和想要打包的模块处于同一个目录下。我要将main.py转为可执行程序,我将所有的静态资源文件都放到和main.py同一个目录下,如下图中的align、music文件夹中的文件都是项目所需的静态资源。
    在这里插入图片描述

  2. 查看代码中所有引用静态资源(文本、图片、音频等)的路径,将路径改为绝对路径。使用Python的os库即可完成对路径的拼接。示例代码和项目结构如下:

    //os.path.realpath(_file):可以获取当前文件的绝对路径:C:\Users\13906\Desktop\faceRecognition\main\_main.py
    mir_path, _ = os.path.split(os.path.realpath(__file__)) \\C:\Users\13906\Desktop\faceRecognition\main,_main.py
    # 将静态资源路径拼接成绝对路径。注意:不要写成"\\music\\success.mp3"
    success_music_path = os.path.join(mir_path, "music\\success.mp3") \\C:\Users\13906\Desktop\faceRecognition\main\music\success.mp3
    fail_music_path = os.path.join(mir_path, "music\\fail.mp3") \\C:\Users\13906\Desktop\faceRecognition\main\music\fail.mp3
    check_face_music_path = os.path.join(mir_path, "music\\check_face.mp3") \\C:\Users\13906\Desktop\faceRecognition\main\music\check_face.mp3
    

    在这里插入图片描述
    以上是我在项目中main模块对静态资源的操作。其他的类似。

  3. 执行转换命令。

    pyinstaller -F --hidden-import="sklearn.utils._cython_blas" --hidden-import="sklearn.neighbors.typedefs" --hidden-import="sklearn.neighbors.quad_tree" --hidden-import="sklearn.tree._utils" main\main.py
    

    上述命令的选项的含义:
    -F:把整个软件(包括依赖的各种库文件)打包成单一文件;
    –hidden-import:隐藏导入的这些库(这个选项是针对我这个项目的,这是一个人脸识别的项目,sklearn是一个机器学习的库,对于其他项目这个选项未必使用)
    -w:禁止Windows的命令行窗口。不然双击exe时会打开一个黑乎乎的dos窗口(这个选项适合在项目调试完毕后再执行,否则看不到项目中打印的信息);
    执行完上述命令后,会在项目目录下生成build、dist两个文件夹和一个.spec文件。

    https://blog.csdn.net/qq_38882497/article/details/105252104
    https://stackoverflow.com/questions/57108026/pyinstaller-modulenotfounderror-no-module-named-sklearn-utils-cython-blas

  4. 解读生成的文件、文件夹。.spec文件,我觉得这是一个配置文件,里面可以设置一些在将.py文件转为.exe文件时的要求。例如,需要隐藏导入的库时也可以在这里设置。此外,比较常用的时,有了这个文件在下次再想将项目中的.py模块转为.exe文件时,可以直接使用pyinstaller运行这个文件。

    pyinstaller main.spec
    

    在这里插入图片描述
    dist文件夹:生成的.exe和项目所有用到的第三方库的就在这个文件夹里面。
    在这里插入图片描述
    build文件夹:并没有使用到,如果大家用到了可以补充。

  5. 运行生成的exe文件即可。有时直接运行生成exe文件,如果含有报错信息,黑框会闪一下,然后就消失了,此时可以通过cmd进入该exe所在的目录,然后再执行该exe文件,使用.\exe文件来运行文件,如下图所有,如果有错误信息,会直接打印在黑框中,不会一闪而过。
    在这里插入图片描述

  6. 完毕,写的不对的地方,欢迎大家指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值