Lv.的博客

pyinstaller 打包多文件工程成 exe

 

  最近做完一个自动化测试的项目,一直以来都是自己在pycharm上运行测试,有时候测出来问题想把脚本给研发用的时候,往往需要配置环境或者重新装一些第三方软件,很麻烦。

于是就想到了是不是可以把这些脚本和系统测试工程打包,然后给大家共享使用。

  网上查了查,似乎pyinstaller打包成exe比较符合我的需求,于是开始研究,中间遇到很多问题,也看了大部分的经验分享,终于完成,现在记录下来,方便有需要的人参考使用。

       环境:Windows 7, Python 3.6.7

一、pyinstaller的安装:

       首先去官网看一下支持的python版本,安装pyinstaller和pywin32,这一步不做太多描述,基本不会有太多问题。

二、打包单个文件:

       1、打开命令行窗口,进入要打包文件路径:pyinstaller -F main.py

       执行完成会在当前目录下新生成两个文件夹:build,dist

       build 文件夹是在打包过程中临时存放中间文件的地方,基本上用不到

       dist   文件夹存放最终生成的exe

       还会生成一个main.spec文件,与你的执行脚本main.py同名,这个文件是执行生成exe的配置文件。打包单个文件的时候用不到,在打包多文件的时候详细介绍。

       2、添加图标:

             推荐一个图标网站:https://www.easyicon.net/

             将想要的图标放到打包文件同级目录下,执行命令:pyinstaller -F -i picture.ico main.py, 图标名称在前面。

三、打包整个工程:

       以下是我在pycharm下的工程WebTest,测试用例在TestCase路径下,run_all_case.py是入口文件,用来执行所有的测试用例并生成测试报告。

       

      命令行窗口进入WebTest所在目录,执行:pyinstaller -D run_all_case.py

  删除build和dist文件夹(也可以不删),后面执行spec文件会重新生成。

      生成run_all_case.spec,进行修改:

      修改如下面红框所示:

  第一行是入口文件。如果还需要执行别的文件,在后面加上就行。

      最下面的是要添加的图标。

      datas里面有2组tuple,第一组是我的测试工程,因为里面有一些测试需要用到的图片,文件和其它资源等。

       如果不添加这个,最终生成的exe执行之后会报错:No such file or directory:

  仔细查看报错的路径,是否报错的文件使用了__file__,因为在pyinstaller 打包后的exe 运行时会在C:\Users\Administrator\AppData\Local\Temp 新增了一个临时文件夹如“_MEIxxxxxx” 所有py代码都会在临时存放在这里。

  

  另外一种方法是修改代码路径:

  def path(file_path):
    if hasattr(sys, "_MEIPASS"):
      base_path = sys._MEIPASS
    else:
      base_path = os.path.abspath(".")
    return os.path.join(base_path, file_path)

      spec文件修改完成之后命令行执行:

  

      完成之后进入dist\run_all_case\下查看,生成了run_all_case.exe。第一次生成最好不要双击运行,直接在命令行窗口运行,如果有报错会在窗口打印出来。

     

posted @   Avatarx  阅读(463)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2017-10-25 图解SQLSERVER联合查询和连接查询的区别
2017-10-25 SQL Server函数大全(三)----Union与Union All的区别
2017-10-25 SQLserver基础--连接查询、联合查询、索引
点击右上角即可分享
微信分享提示