Advertisement

使用 PyInstaller 打包的 Python 程序会出现两个进程

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本文探讨了使用PyInstaller打包Python程序时出现双重进程的问题,并提供了解决方案和优化建议。 在使用 PyInstaller 打包 Python 程序时,经常会遇到一个现象:运行打包后的可执行文件会显示出两个进程。这个问题不仅出现在基于 Flask 的 Web 项目中,在普通的 Python 应用程序上也会出现,并且不受操作系统的限制(如 Mac, Linux 和 Windows)。 PyInstaller 是一种用于将 Python 脚本转换为独立的、跨平台的应用程序工具,它能够创建包含所有依赖项的单一可执行文件。当你使用 `-F` 参数进行打包时,意味着你希望生成一个单独运行的可执行文件(--onefile 模式)。在这种情况下,PyInstaller 会将所有的依赖合并到这个单一文件中,并在启动应用程序的时候将其解压至临时目录。 当程序被这样打包后并运行时,实际上有两个进程存在。主进程负责实际的应用逻辑处理;另一个辅助进程则是 PyInstaller 的一部分,在执行过程中用于从可执行文件内部提取必要的资源和代码片段至一个临时位置,然后在此基础上开始运行主应用程序。这个过程确保了动态加载所需的模块和其他资源。 如果程序正常结束或者遇到错误而崩溃时,该辅助进程会清理掉生成的临时目录,以防止留下不必要的文件残留。然而,在使用 `-F` 参数打包的应用中观察到两个独立的进程中,一个就是实际执行用户代码的部分(主进程),另一个则是负责上述操作的 PyInstaller 辅助进程。 如果你不需要这种动态加载功能或者希望简化程序运行时的行为,可以选择不指定 `-F` 参数而采用 --onedir 模式。在这种模式下,PyInstaller 会生成包含所有依赖文件和目录结构的一个文件夹而不是一个单独可执行文件。这样,在启动应用程序的时候就不会有额外的解压步骤了,并且只会看到一个进程。 然而需要注意的是,在使用 onedir 模式的场景中,如果程序崩溃或不正常退出时可能不会自动清理临时工作目录中的内容,从而可能导致一些不必要的数据残留问题。因此在选择打包方式时需要权衡各种因素以满足特定的应用需求和环境要求。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 使 PyInstaller Python
    优质
    本文探讨了使用PyInstaller打包Python程序时出现双重进程的问题,并提供了解决方案和优化建议。 在使用 PyInstaller 打包 Python 程序时,经常会遇到一个现象:运行打包后的可执行文件会显示出两个进程。这个问题不仅出现在基于 Flask 的 Web 项目中,在普通的 Python 应用程序上也会出现,并且不受操作系统的限制(如 Mac, Linux 和 Windows)。 PyInstaller 是一种用于将 Python 脚本转换为独立的、跨平台的应用程序工具,它能够创建包含所有依赖项的单一可执行文件。当你使用 `-F` 参数进行打包时,意味着你希望生成一个单独运行的可执行文件(--onefile 模式)。在这种情况下,PyInstaller 会将所有的依赖合并到这个单一文件中,并在启动应用程序的时候将其解压至临时目录。 当程序被这样打包后并运行时,实际上有两个进程存在。主进程负责实际的应用逻辑处理;另一个辅助进程则是 PyInstaller 的一部分,在执行过程中用于从可执行文件内部提取必要的资源和代码片段至一个临时位置,然后在此基础上开始运行主应用程序。这个过程确保了动态加载所需的模块和其他资源。 如果程序正常结束或者遇到错误而崩溃时,该辅助进程会清理掉生成的临时目录,以防止留下不必要的文件残留。然而,在使用 `-F` 参数打包的应用中观察到两个独立的进程中,一个就是实际执行用户代码的部分(主进程),另一个则是负责上述操作的 PyInstaller 辅助进程。 如果你不需要这种动态加载功能或者希望简化程序运行时的行为,可以选择不指定 `-F` 参数而采用 --onedir 模式。在这种模式下,PyInstaller 会生成包含所有依赖文件和目录结构的一个文件夹而不是一个单独可执行文件。这样,在启动应用程序的时候就不会有额外的解压步骤了,并且只会看到一个进程。 然而需要注意的是,在使用 onedir 模式的场景中,如果程序崩溃或不正常退出时可能不会自动清理临时工作目录中的内容,从而可能导致一些不必要的数据残留问题。因此在选择打包方式时需要权衡各种因素以满足特定的应用需求和环境要求。
  • 使PyInstaller含多Python文件成EXE
    优质
    本教程详解如何利用PyInstaller工具,高效地将由多个Python文件组成的复杂项目封装为独立可执行(EXE)文件,便于分发和运行。 本段落主要介绍了如何使用pyinstaller将包含多个.py文件的Python程序转换为.exe可执行文件,并通过示例代码进行了详细的讲解。内容对学习或工作中需要进行此类操作的人士具有参考价值,希望有需求的朋友可以跟随文章一起学习和实践。
  • 使PyinstallerPython及减小文件体积
    优质
    本教程详细介绍如何利用PyInstaller工具将Python脚本封装为独立可执行文件,并探讨减少输出文件大小的方法。 本段落主要介绍了如何使用Pyinstaller打包Python程序并压缩文件大小,并通过示例代码进行了详细讲解。文章内容对学习或工作中需要进行此类操作的读者具有参考价值,有需求的朋友可以参考这篇文章。
  • 使PyInstallerexe时遇到问题
    优质
    本文介绍了在利用Python工具PyInstaller将.py文件打包为.exe可执行文件过程中常见的问题及解决方案。 在使用Python 2.7.17和pyinstaller 3.5打包pygame写的贪吃蛇游戏为exe文件的过程中遇到了一些问题。游戏中用到了C:\Windows\Fonts\simsun.ttc(宋体)字体文件,但在打包时没有出现错误信息。 虽然打包过程中出现了警告:“WARNING: 隐藏导入“pygame._view”未找到!” 但这些警告可以忽略不计。 然而,在运行生成的exe文件时遇到了NotImplementedError:Cant perform this operation for unreg的问题。
  • 使PyInstaller加密示例代码
    优质
    本示例代码展示如何利用Python库PyInstaller将应用加密并打包为独立可执行文件,便于分发与部署。 本段落主要介绍了使用Pyinstaller进行加密打包应用的示例代码,代码简洁明了,易于理解,具有很好的参考价值,适合学习或工作中借鉴。需要相关资料的朋友可以参考此内容。
  • 如何pyinstaller32位exe
    优质
    本教程详细介绍了使用PyInstaller工具将Python脚本打包成32位Windows可执行文件(.exe)的过程和技巧,适合希望简化软件分发流程的开发者。 本段落详细介绍了如何使用pyinstaller打包32位的exe程序,具有一定的参考价值,需要的朋友可以参考一下。
  • 使Python3.x、Pyqt5和PyinstallerPython窗体为*.exe文件方法
    优质
    本教程介绍如何利用Python 3.x版本结合PyQt5库开发图形界面应用程序,并通过PyInstaller工具将源代码封装成独立的.exe可执行文件,方便在无Python环境的Windows系统上运行。 使用Python3.x结合Pyqt5和Pyinstaller可以将Python窗体程序打包成*.exe可执行文件。这一过程涉及到几个步骤:首先确保你的开发环境已经安装了必要的库,包括Python、PyQt5以及PyInstaller;其次编写好基于PyQt5的GUI应用程序代码;然后使用命令行工具运行pyinstaller来生成.exe文件。在配置和优化过程中可能还需要解决一些依赖问题以保证打包后的程序能够在目标机器上正常运行。
  • PyInstaller图形界面版
    优质
    本工具为Python项目的PyInstaller模块提供图形化操作界面,简化了将Python脚本打包成独立可执行文件的过程,适合各类编程开发人员使用。 使用已安装的pyinstaller库,并通过subprocess调用系统中的pyinstaller.exe 和 pyi-makespec 来实现图形界面的应用程序打包。在Windows 7上已经成功编译并通过自身程序完成制作。如果有任何问题,欢迎联系。
  • 使 PyInstallerPython 为 exe 时遇到导入错误解决方法
    优质
    本文介绍了解决将Python程序通过PyInstaller打包成exe文件过程中出现的导入包错误的方法。 在使用PyInstaller将Python程序打包成exe文件时,如果程序运行正常但在生成的exe文件中出现导入包错误(例如“No module named cx_Oracle”),可以尝试以下方法解决该问题。 首先确认所有依赖库已正确安装,并且这些依赖库也包含在构建环境中。可以通过创建一个清单文件来指定需要打包的所有模块和数据,确保cx_Oracle及其相关依赖项被包括进去。此外,在运行PyInstaller时使用适当的参数(如--hidden-import)来导入特定的隐藏或间接引用的模块。 解决此类问题的关键在于保证Python环境与生成exe所需的一致性,并正确配置PyInstaller的相关设置以包含所有必要的库文件和数据资源。
  • Scrapy项目使Pyinstaller步骤
    优质
    本文介绍了如何使用PyInstaller将基于Python的Web爬虫框架Scrapy开发的项目进行打包,便于在没有安装相同依赖环境的机器上运行。详细阐述了从准备阶段到最终生成可执行文件的所有步骤和注意事项。 本段落主要介绍了使用Pyinstaller打包Scrapy项目的步骤,并通过示例代码进行了详细的讲解。内容对学习或工作中需要进行此类操作的读者具有一定的参考价值。希望有需求的朋友能够跟随文章一起学习,掌握这一技能。