• 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:UsersAdministratorAppDataLocalTemp 新增了一个临时文件夹如“_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 un_all_case下查看,生成了run_all_case.exe。第一次生成最好不要双击运行,直接在命令行窗口运行,如果有报错会在窗口打印出来。

         

  • 相关阅读:
    node.js 89行爬虫爬取智联招聘信息
    VUE2开发实战——搜索功能
    一个问题一份收获——请求回来的数据应该怎么处理
    JavaScript学习笔记(散)——继承、构造函数super
    讲解版的导航高亮(新手福利)原生JS
    关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用
    HTML5中新添加事件
    javascript鸭式辩型法实现接口
    JS原型与原型链终极详解
    Javascript
  • 原文地址:https://www.cnblogs.com/little-monica/p/11016978.html
Copyright © 2020-2023  润新知