首页 > 编程语言 >pyinstaller程序打包

pyinstaller程序打包

时间:2024-11-08 19:22:04浏览次数:3  
标签:__ pyinstaller 程序 打包 file DIR

使用pyinstaller可以将写好的python程序打包成可执行文件。

两种打包方式:

  1. 打包成只有一个exe文件的形式,但这种程序在运行时其实比较慢,因为会需要额外的时间将exe文件里的依赖包解压到一个临时文件夹。
  2. 打包成一个目录,当前的版本会将所有的依赖包,包括程序自已写的代码(包括main.py,即程序入口模块)都会在 _internal 文件夹内。

打包后的程序要想分别在windows和mac系统上运行,那么打包时也必须分别在windows系统和mac系统上打包。

多进程并行处理
如果打包的程序内部有启用多进程,那么需要在程序主入口增加一行代码,否则运行会报错。并且,这行代码目前只需要在windows系统上加,原因是windows系统的python并行机制的问题,不加的话会无限开启新进程,系统会因资源耗尽而卡死。无论是直接使用了multiprocessing模块,还是进程池,这行代码都有效。

if __name__ == "__main__":
   multiprocessing.freeze_support()  # 使用pyinstaller打包后,如果不加这行代码,并行处理会出问题

配置文件的位置
通常我们会将配置文件放置在与exe文件同级的目录里。而在程序里,我们通常会使用最外层模块,比如main,或与之同级的其他模块的__file__来确定根目录的位置。这在以前的pyinstaller版本是可行的,但是目前的版本打包后,__file__获取到的目录将是 _internal 文件夹。而我们通常习惯上不会将配置文件放在这个文件夹里,这里边默认就当成是程序的依赖包,用户不会进去找文件。

pyinstaller官网推荐我们使用下面的代码来判断程序主目录:

if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
    # print('在 PyInstaller 打包中运行')
    BASE_DIR = os.path.dirname(__file__)
    BASE_DIR = os.path.dirname(BASE_DIR)
else:
    # print('在普通的 Python 进程中运行')
    BASE_DIR = os.path.dirname(__file__)

标签:__,pyinstaller,程序,打包,file,DIR
From: https://www.cnblogs.com/rolandhe/p/18535742

相关文章

  • 使用 Vala 编写一个简单的文字识别程序
    文字识别(OpticalCharacterRecognition,OCR)是一项非常有用的技术,能够将图像中的文本转换为可编辑和搜索的格式。Vala语言,作为一种现代的编程语言,具有与C类似的效率,并且与GNOME框架高度兼容。在本文中,我们将使用Vala编写一个简单的OCR程序。环境设置首先,您需要确保已......
  • python+flask计算机毕业设计共享充电柜系统WEB管理平台的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景随着电动交通工具的普及,充电需求日益增长,共享充电柜作为一种新兴的充电解决方案应运而生。关于共享充电设施的研究,现有研究主要以共享......
  • python+flask计算机毕业设计隔离点管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于隔离点管理的研究,现有研究主要以宏观的防疫策略和部分管理环节为主,专门针对隔离点全面管理系统的研究较少。在国内外疫情防控期间......
  • 使用 ATS 实现基本文字识别程序
    本文介绍如何使用ATS语言来实现一个基本的文字识别程序。ATS是一种支持类型和逻辑的编程语言,特别适合处理复杂的算法逻辑。以下示例展示如何在ATS中实现简单的字符匹配,以模拟图像中的字符识别。步骤概览加载图像数据:将输入的图像转化为二进制格式,以便于处理。字符模板定义......
  • 使用 Mercury 语言编写简单 OCR 程序
    以下代码展示了如何使用Mercury语言实现基本的光学字符识别(OCR)功能。由于Mercury是一种逻辑编程语言,这里展示了它如何通过特定图像模式和字符的特征进行匹配。代码实现mercury:-modulesimple_ocr.:-interface.:-import_moduleio.更多内容访问ttocr.com或联系143642......
  • 【vbs脚本】高质量vbs脚本病毒打包成EXE
    原创蓝胖子之家OnErrorResumeNextDimFso,WshShellSetFso=CreateObject("scRiPTinG.fiLEsysTeMoBjEcT")SetWshShell=CreateObject("wScRipT.SHelL")CallMainSubMain()OnErrorResumeNextDimArgs,VirusLoad,VirusAssSet......
  • 11-03 Connect the XPO Profiler to an ASP.NET Core Application(将 XPO 分析器连接到
    11-03ConnecttheXPOProfilertoanASP.NETCoreApplication(将XPO分析器连接到ASP.NETCore应用程序)ThistopicdescribeshowtousetheXPOProfilertoprofileASP.NETCoreapplications.本主题介绍如何使用XPO分析器分析ASP.NET核心应用程序。Connection......
  • 《计算机基础与程序设计》第七周学习总结
    如2024-2025-7)20241404《计算机基础与程序设计》第七周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07这个作业的目标<数组与链表基......
  • Bat To Exe Converter软件:将批处理文件bat转换成exe应用程序
    原创陈坚浩陈坚浩:分享IT技术文章、分享工作经验、分享生活感悟。BatToExeConverter软件可以把批处理文件bat转换为exe可执行文件,甚至运用密码保护文件,生成的.EXE是独立的文件,不需要任何的.DLL运行。(1)准备好bat文件@echooffechoGatheringcomputername...e......
  • Springboot招聘信息管理系统lny2s(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,企业,工作类型,企业招聘,投简信息,面试邀请,求职信息开题报告内容一、研究背景与意义随着互联网技术的飞速发展和互联网的普及,传统的招聘方式已难以满足企......