• pyinstaller打包完整python项目


    第一步:进入项目文件夹,pip安装pipenv

    cd 项目文件夹
    pip install pipenv

    第二步:创建虚拟环境自动安装依赖--进入虚拟环境--查看依赖

    此步骤建议使用shell执行。

    pipenv install

    第三步:进入虚拟环境

    这一步非常重要,如果没有进入,那打包后运行会各种报错,原因就是没有把虚拟环境中模块打包进去,模块缺失。

    pipenv shell

    第四步:升级pip,用pip安装pyinstaller

    1. python -m pip install --upgrade pip
    2. pip install pyinstaller

    第五步:用pip安装pipenv安装不了的模块或者pipenv安装后会造成打包出错的那些模块到虚拟环境,如下面的这些模块:

    1. pip install pypiwin32
    2. pip install -i https://mirrors.tencent.com/pypi/simple/ --upgrade tencentcloud-sdk-python

    第六步:确认所有模块都安装好了

    pipenv graph

    第七步:生成spec文件

    我们在这一步添加各种参数,如 -D -c  --version-file=file_version_info.txt 这些,生成spec文件:

    pyi-makespec -D -c --version-file=file_version_info.txt --icon=ico.ico weijian.py

     file_version_info.txt是一个文本文件,需要放在和启动入口相同目录下,会根据这个文件生成版本信息,该文件说明见下: 

    1. # UTF-8
    2. VSVersionInfo(
    3. ffi=FixedFileInfo(
    4. #filevers和prodvers应该始终是包含四个项的元组:(1、2、3、4),将不需要的项设置为0
    5. filevers=(21, 10, 27, 0), # 文件版本******,鼠标悬浮exe会显示,也显示在 详细信息-文件版本,这个是检测版本的依据
    6. prodvers=(4, 6, 9, 4), # 生产商,未见显示在哪里
    7. mask=0x3f, # 两个位掩码
    8. flags=0x0,
    9. OS=0x4, # 为其设计此文件的操作系统,0x4-NT,无需更改它
    10. fileType=0x1, # 文件的常规类型,0x1-该文件是一个应用程序
    11. subtype=0x0, # 文件的功能,0x0表示该文件类型未定义
    12. date=(0, 0) # 创建日期和时间戳
    13. ),
    14. kids=[
    15. StringFileInfo(
    16. [
    17. StringTable(
    18. u'040904B0',
    19. [StringStruct(u'CompanyName', u'云鲸信息'), # 鼠标悬浮exe会显示
    20. StringStruct(u'FileDescription', u'PC疫情防控自动化工具'), # 文件说明,鼠标悬浮exe会显示,也会显示在 详细信息-文件说明
    21. StringStruct(u'FileVersion', u'1.0.0'), # 没见哪里显示
    22. StringStruct(u'InternalName', u'SVN'),
    23. StringStruct(u'LegalCopyright', u'云鲸信息版权所有'), #版权,会显示在 详细信息-版权
    24. StringStruct(u'OriginalFilename', u'小小机器人'), #原始文件名,会显示在 详细信息-原始文件名
    25. StringStruct(u'ProductName', u'机器人'), #产品名称,会显示在 详细信息-产品名称
    26. StringStruct(u'ProductVersion', u'1.1.0')]) #产品版本,会显示在 详细信息-产品版本
    27. ]),
    28. VarFileInfo([VarStruct(u'Translation', [2052, 1200])]) # 语言,中文简体
    29. ]
    30. )

    第八步:修改spec文件,添加找不到的dll、添加图片等静态资源、修改项目名、exe名等

    第九步:根据编辑后的spec打包exe

    之前没有版本信息的时候,我把-D参数放到这一步没问题,添加 --version-file=file_version_info.txt版本信息后,就会报错找不到版本信息的txt文件,把-D参数放到第七步就好了

    pyinstaller weijian.spec

    至此,一个pipenv管理的项目打包完毕

     以上即为所有生成的文件了,有想了解build和dist都为什么作用的文件的同仁请看我的这篇博文:Selenium自动化脚本打包exe文件_kylinmin的博客-CSDN博客。

  • 相关阅读:
    智能呼叫中心系统的未来发展趋势:为企业开启全新服务模式
    JDBC教程
    TCP/IP(五)TCP的连接管理(二)三次握手细节
    景联文科技数据标注:人体关键点标注用途及各点的位置定义
    Java Reflection:Java反射简介说明
    动态规划篇——背包问题
    模板:斯坦纳树
    pragma once与ifndef的区别
    Mac如何修改文件的默认打开程序
    kubernetes的DevOps业务(二):Jenkins,GitLab,Harbor,Tekton,GitOps
  • 原文地址:https://blog.csdn.net/anmin8888/article/details/126272189