首页 > 编程语言 >python-55-打包exe执行

python-55-打包exe执行

时间:2023-09-09 14:25:09浏览次数:58  
标签:可执行文件 exe allure plugin python Python 55 pytest 打包

目录

前言

你是否有这种烦恼?

  • 别人在使用你的项目时可能还需要安装各种依赖包?
  • 别人在使用你的项目,可能Ta压根都不会安装环境?
  • 共用服务机器,偶尔被别人改了依赖包版本,导致运行不起来?

我会发现每次搞这些都要耗费一大堆时间,于是想到以前也有打包过如exe文件直接执行。

一、pyinstaller

PyInstaller是一个用于将Python程序转换为独立的可执行文件的工具。使用PyInstaller,您可以将Python程序打包为单个可执行文件,该文件可以在没有Python解释器的计算机上运行。
以下是使用PyInstaller将Python程序打包为可执行文件的基本步骤:

1、确保已经安装了PyInstaller。如果没有安装,可以使用以下命令进行安装:

pip install pyinstaller

2、打开终端或命令提示符,并导航到包含您的Python程序的目录。

3、运行以下命令来将Python程序打包为可执行文件:

pyinstaller your_script.py

其中your_script.py是您的Python程序的文件名。

4、PyInstaller将在当前目录中创建一个名为dist的文件夹,其中包含生成的可执行文件。在Windows上,可执行文件将具有.exe扩展名,而在Linux和Mac上则没有扩展名。
截图
5、命令查看

pyinstaller --help
  • -F:将所有文件打包为一个单独的可执行文件。
  • -D:将所有文件打包为一个目录,包含可执行文件和所有依赖的文件。
  • -c:将程序与命令提示符结合在一起,以便在命令提示符下运行。
  • -d:将调试信息打包进可执行文件中。
  • --onefile:将所有文件打包为一个单独的可执行文件。
  • -o:指定输出文件的位置。
  • -w:打包为窗口文件。
  • -i:指定ico。

我最常用的为:

pyinstaller -F -i xxx.ico xxx.py

二、实践打包exe

pyinstaller -F -i ./desc/build.ico ppl.py

1、遇坑1:Plugin already registered

依赖一般都会打入,但是其中也有入到坑,比如 pytest

import pytest
from allure_pytest import plugin as allure_plugin
# pytest.main(argv)
pytest.main(argv, plugins=[allure_plugin]) # todo use package

当我打包时需要将 allure_plugin 依赖打入,但是当我在ide中运行又报错,于是只能改为:

import pytest
from allure_pytest import plugin as allure_plugin
pytest.main(argv)
# pytest.main(argv, plugins=[allure_plugin]) # todo use package

pytest.main(argv) 才得以解决,报错如下:
ValueError: Plugin already registered: allure_pytest=<module 'allure_pytest.plugin'
错误截图


2、遇坑2:OSError 句柄无效

1、打包后执行exe发现以下错误:

Traceback (most recent call last):
File "<string>", line 1, in <module>
OSError: [WinError 6] 句柄无效。

后看到是loguru日志模块报错:
也看到了此 issues 但是没有实际解决。

2、于是在运行时添加一个参数表示日志是否用 loguru
默认是用,如果添加参数 --colour=0 则表示不使用loguru。
部分代码改动如下:类 PplLog 打印 print 分别有使用到loguru的方法一致,这样代码改动最小了。
错误截图
3、打包测试
发现正常了,应该就是这个原因 issues 但貌似没有看到更好的解决办法,只能先这样了。
运行截图


三、总结

  • 打包后方便是方便到各种机器可一键运行了,但是你的一些改动可能又得重新打包,或者你看你会遇到各种各样的打包问题,也得花时间去解决。

  • 如果是linux、mac等机器下,那可能也得去有台宿主机才可以打包,目前没看到Windows下可以任意打包其它操作系统的。

  • 在代码解释器下运行没有问题,但不一定打包后没问题,比如少了依赖等也是比较难排查的。

我的代码地址:
github
gitee

在这里插入图片描述

标签:可执行文件,exe,allure,plugin,python,Python,55,pytest,打包
From: https://www.cnblogs.com/gsxl/p/17689413.html

相关文章

  • Python学习笔记:pandas.Series.str.split分列
    split()方法通过指定分隔符对字符串进行切分,返回分割后的字符串列表  pandas.str.split分列Series.str.split(pat=None,expand=False)  返回分割后的Series ......
  • 洛谷P5556 圣剑护符
    题目链接先考虑如何判定一个集合是否存在两个异或和相同的子集\(s,t\),不然解决这道题就是无稽之谈。根据异或的优良性质,不妨在\(s,t\)中分别去掉\(s\capt\),之后从\(s\)中任意移动\(|s|-1\)个元素到\(t\)中去,易发现此时两个集合的元素异或和还是相同。也就是说,我们现......
  • Python学习 -- 文件内容操作技术详解
    文件操作在编程中是一个常见的任务,Python提供了丰富而灵活的文件操作工具,能够帮助您轻松地读取、写入和处理文件内容。在本篇博客中,我们将深入探讨Python中文件操作的各种技术和方法,包括打开文件、读写文件、移动文件指针、关闭文件等。打开文件在Python中,使用内置的open函......
  • delphi FireDAC 调用 Execute 提示 `[FireDAC][SQL Server Native Client 10.0]字符串
    FireDAC调用Execute提示[FireDAC][SQLServerNativeClient10.0]字符串数据,长度不匹配错误问题调用Execute向SQLServer数据库中批量插入数据时,参数中有BLOB数据类型(ftBlob、ftMemo等)时,出现[FireDAC][Phys][ODBC][Microsoft][SQLServerNativeClient10.0]字符串......
  • 创建Anaconda虚拟Python环境的方法
      本文介绍在Anaconda环境下,创建、使用与删除Python虚拟环境的方法。  在Python的使用过程中,我们常常由于不同Python版本以及不同第三方库版本的支持情况与相互之间的冲突情况,而需要创建不同的Python虚拟环境;在Anaconda的帮助下,这一步骤就变得十分方便。  首先,我们需要打......
  • python进阶 day08字典数据类型内置方法
    字典数据类型内置方法1.作用对于值添加描述信息使用他2.定义方式用{}以逗号隔开加入键值对:key:valueinfo_dict={'name':'wangdapao','age':18,'height':120,'gender':'female','hobby_list':['dapao','basketball'......
  • Python给你一个字符串,你怎么判断是不是ipv4地址?手写这段代码,并写出测试用例【杭州多测
    ipv4地址的格式:(1~255).(0 ~255).(0 ~255).(0 ~255)1.正则表达式importredefcheck_ip(one_str):compile_ip=re.compile('^(([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$')ifcompile_ip.match(one_str......
  • python实现输入一个字符串,输出第m个只出现过n次的字符
    功能需求输入一个字符串str,输出第m个只出现过n次的字符功能分析1:定义一个函数,函数传入三个参数,分别是输入的字符串、第m个、n次。2:统计每个字符在字符串中出现的次数,然后按照出现次数进行排序。3:找到第m个只出现n次的字符并输出。程序实现deffind_char(str,m,n):#统......
  • 朴素贝叶斯分类 -python
    算法思想——基于概率的预测贝叶斯决策论是概率框架下实施决策的基本方法。对分类任务来说,在所有相关概率都已知的情况下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的标记类别。理论基础贝叶斯定理这个定理解决了现实生活中经常遇到的问题:已知某条件概......
  • 重磅!python自动化办公,终于支持 Mac下载了
    大家好,这里是程序员晚枫,小红薯/小破站也叫这个名。给小白的《50讲Python自动化办公》,课程一直在更新中,昨晚12点多,有朋友在课程群里问能不能支持Mac?今天给大家分享一个好消息:python-office终于支持mac下载了。下载命令先给大家说一下下载命令,然后再说注意事项。不论你的电脑上......