2021-04-08

用python打包py文件生成exe文件

一、 在windows环境下创建一个新的虚拟环境

  1. 安装virtualenv:
    win+r打开cmd命令窗口,输入命令:
 pip install virtualenv

接着创建一个虚拟环境:

virtualenv py2exe_env  # 命名请自定义

创建完成以后,在创建的文件夹里会发现虚拟环境命名的文件夹py2exe_env,如下图所示。
在这里插入图片描述

  1. 然后cd 到虚拟环境py2exe_env的Script目录下,输入如下命令启动虚拟环境:
activate py2exe_env

二、 安装新虚拟环境中缺失的依赖包

  1. 在该虚拟环境中通过pip安装必要模块
    在pycharm中重新配置setting,将编译器设置为虚拟环境下的python.exe,然后运行predict_me.py文件,该文件是我本次要生成exe的文件,可换成自己的文件。在新环境中运行文件会发现缺失很多的依赖包,此时缺什么包就在新环境下安装什么包,直到predict_me.py文件能在新的环境中运行不报错。
    注意:别忘了在新的虚拟环境中重新安装pyinstaller !
  2. 什么是pyinstaller?
    pyinstaller将Python应用程序冻结(打包)独立可执行文件中。它可以构建较小的可执行文件,它是完全多平台的,并且使用OS支持来加载动态库,从而确保完全兼容。
  3. 安装pyinstaller:
    安装“pip install pywin32”、“pip install wheel”、“pip install pyistaller”。安装完成后,运行pip list。可以看到,pyinstaller已经安装完了。
    安装完成后,在该虚拟环境中(虚拟环境启动状态下),cd到要编译文件目录下,输入编译命令:
pyinstaller -F predict_me.py  #predict_me.py 为自己要生成的exe的文件 运行时出现doc命令窗口

在这里插入图片描述

输入编译命令之后回车,在predict_me.py文件同级目录下会生成build文件夹、dist文件夹和一个predict_me.spec文件,此时,dist文件夹中可能会有predict_me.exe文件,但是在这里我的打包失败了,并没有出现,所以需要进行predict_me.spec文件的修改。

predict_me.spec文件是生成exe文件的配置文件,此时cmd命令窗口中执行完命令中之后会报错,大概意思就是在打包导入某些模块时,常会出现"RecursionError: maximum recursion depth exceeded"的错误,这可能是打包时出现了大量的递归超出了python预设的递归深度。因此需要在spec文件上添加递归深度的设置,设置一个足够大的值来保证打包的进行,此时需要我们对predict_me.spec文件进行配置。在文件中输入:

import sys
sys.setrecurionlimit(500000)

另外,在打包成功生成exe之后运行时,出现“WARNING: file already exists but should not: C:\Users\workAI\AppData\Local\Temp_MEI132522\torch_C”,此时需要我们对predict_me.spec文件进行再次配置。在文件中输入:

for d in a.datas:
    if '_C.cp37-win_amd64.pyd' in d[0]:
        a.datas.remove(d)
        break

在这里插入图片描述
在此,predict_me.spec文件的配置完成了,需要我们对此文件进行运行,输入:

pyinstaller -F predict_me.spec

然后回车。

最后在dist文件夹中查看是否生成了predict_me.exe文件。如果有,不要着急双击运行(可能会出现闪退,如果出现错误不方便查看),把它直接拖到cmd窗口中,回车运行,如果出现错误,方便查看。如下图所示。
在这里插入图片描述
本文的部分内容借鉴了这几篇博客,在此,真诚地感谢以下博主的分享!
pyinstaller的安装教程:
https://zhuanlan.zhihu.com/p/99262788
Windows虚拟环境创建方法
https://blog.csdn.net/Artificial_idiots/article/details/109554749
spec文件配置
https://blog.csdn.net/weixin_42052836/article/details/82315118
WARNING: file already exists but should not: C:\Users\workAI\AppData\Local\Temp_MEI132522\torch_C问题的解决方法参考
https://blog.csdn.net/weixin_43218120/article/details/108596405
递归超过最大深度问题的解决方法
https://blog.csdn.net/wangziyang777/article/details/106998390/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值