python打包成exe_Python打包成exe时,再犯这几个错误就说不过去了

大家好,我是今天的值班小编,不知道朋友们开工了没有,小编的公司已经远程办公好几天了。今天由于写游戏教程的那位小编弃坑不更新文章了,只好由本小编继续来解决粉丝朋友们的问题。 如果朋友们在使用python的过程中遇到了任何问题,都可以私信小编哦,小编会抽出时间来帮您解决问题的。

2dcb3937586ede8fc7a623742881d215.png

永远都不要放弃

问题背景

一提起如何运行Python,朋友们的第一印象肯定是命令行那个黑色的dos/linux命令行窗口了。由于Python本身是脚本语言,需要解释器来执行,所以默认情况就是这样的。

这样在开发阶段其实蛮好的,但是到了发布阶段就遇到了大麻烦:很有可能对方的windows计算机里面没有安装python解释器,导致您辛苦熬夜白了头开发的Python脚本无法成功部署运行,到了这个阶段,可以说是万事俱备只欠东风了。

为了解决最后一步的这个问题,国外会念经的大神程序员们想出了一个绝招:把Python代码打包成exe可执行文件。

ef34707d4eade69fc869faf0d17f0aa1.png

大神

为什么要生成exe可执行文件

首先,刚才已经说了,在机器上不需要安装对应的Python解释器,更不需要pip安装依赖的包。

其次,打包成可执行文件之后,别人就看不到你的Python代码啦,这就可以避免你的代码被人抄袭或者恶意修改,在一定程度上保护了你的代码。

最后,从用户的角度来看,用户只要下载了exe文件,双击就可以运行了,也不需要安装任何东西。您的代码变成了真正的“绿色软件”,给用户带来了极大的方便。

c0bca25b74c1a07c71c5444611828eef.png

方便,时间就是金钱

安装打包工具

业界最常用的Python脚本打包工具就是pyinstaller了,没有之一。通过pip可以很方便地安装成功:pip install pyinstaller。如果您的网速太慢,可以尝试使用国内的源。

安装之后,在cmd命令行里面输入pyinstaller -v并回车,如果能够看到其版本号,就说明安装成功了。

小编这次安装的时候,版本号是3.6,应该是最新版了。

dae659ff6931cc46307f8831373a411c.png

安装完毕

环境安装完毕,下面小编就来解决粉丝朋友们私信发过来的关于pyinstaller使用过程中遇到的几个问题。

第一个问题:exe文件图标怎么自定义呀?

首先,您需要准备一个ico格式的图标,或者是准备一个jpg/png图片也行,网上有很多工具可以把它转化成ico格式的文件。需要注意的是,图片里面的元素不要太复杂,不然变成ico文件之后,图片整体会缩小很多倍,图片内的很多元素就看不清楚了。

其次,在打包的时候,加上参数 -i ico文件名 ,这样就可以使得打包出来的exe文件使用您自定义的ico图标了。

da3fe3669ff4d2f610feccc9f73da1b1.png

图标

第二个问题:怎样去掉exe运行时弹出的dos命令行黑色窗口?

默认情况下,打包出来的exe文件双击运行之后,会弹出一个dos命令行黑色窗口,这种行为使得这个exe文件看起来很不专业,毕竟我们日常使用的exe文件不会出这种妖蛾子。

解决办法也很简单,在打包的时候,加上参数 --noconsole

230076b87f066cae6781bf8d9af6f378.png

第三个问题:为什么加了noconsole之后,还会有dos窗口一闪而过?

这个问题就很玄学了,需要针对具体的case来进行分析。

这位粉丝朋友的代码,小编仔细看了一下,发现里面有import os和os.system()执行外部程序,应该就是这个原因了。

把import os改成import subprocess,再把os.system改成subprocess.run,问题解决!

48447f57c8e6c21d0b1db42c1b4e83a1.png

第四个问题:为什么我打包出来的exe文件有好几百M?

一般来说,python代码打包出来的exe文件有十几甚至几十M都是正常的。这位朋友打包出来的exe文件有好几百M,实在是出乎小编的意料之外。 后来小编仔细阅读了这位朋友的python代码,发现他import了非常多的库,这就基本上无解了,除非用c++改写一下?

不知道朋友们有没有好的办法,可以在留言区告诉小编哦。

5e7bf94ee56e2dd96aadd942e1ae5bc0.png

后记

今天的文章就到这里,在此文中,小编帮粉丝朋友们解决了三个使用pyinstaller过程中遇到的问题(第四个问题并没有解决),贡献实在不小,不知道能不能得到老板的赏识而升职加薪迎娶白富美呢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器视觉 光学工程专业_瑞士Idonus MEMS制造设备 创新技术 机器视觉测量(远心光学)...

机器视觉从图像处理算法到光学安装,idonus 提供部分或全部机器视觉解决方案。典型应用包括机械零件的高通量自动测量、表面质量检测、定位、质量控制或识别。我们定制开发的解决方案可与机器人化或手动设备相结合。我们的报价:定制硬件和软件&#xff0c…

vs 中使用32 位mysql_vs2010连接mysql数据库(含win32和x64两种平台)

数据库安装: 此处有两种安装方式,第一种使用xxx.msi图形化安装方式,和普通的exe软件安装方式一样,按照默认选项一直下一步就可以。mysql下载地址为http://dev.mysql.com/downloads/windows/installer/ 第二种是在mysql官网下载zip…

电脑时间校对器_笔记本电脑如何保养?华为教你五招轻松延长使用时间

集微网7月11日消息(文/数码控),近日华为花粉俱乐部官方微信公众号发表长文教用户如何保养笔记本电脑,具体有以下五招:

uvc能支持多大分辨率_华为手环B5测评:该有的功能一个不缺,甚至还能变身蓝牙耳机...

前阵子,华为召开nova5系列新品发布会的同时,也给用户们带来了华为手环B5的新配色--铅石青。华为手环B5在去年7月发布,分为三个版本:运动版999元、商务版1199元、时尚版1499元。​此次更新的是运动版,售价仍为999元&…

cf不能全屏win7的解决方法_win7系统局域网不能访问怎么办 win7局域网不能访问解决方法...

在局域网当中比较实用的功能要数共享文件了,局域网共享可以让用户们共享和管理资源更加便捷,可以大大提高工作效率,不过最近有位win7系统用户使用电脑的时候,发现电脑无法访问局域网中的其他任何一台电脑,这让用户不知…

CGLib动态代理原理

CGLib动态代理原理 CGLib动态代理是代理类去继承目标类,然后重写其中目标类的方法啊,这样也可以保证代理类拥有目标类的同名方法; 看一下CGLib的基本结构,下图所示,代理类去继承目标类,每次调用代理类的方…

sql读取excel数据_Python 读取 Excel 数据,并插入到MySQL

说实话,个人不建议用Python来读取Excel进行入库操作,有条件的话,可以尝试用 ETL 工具,快速导入到MySQL中,或者也可使用 SQL 的导入工具进行。写本文的目的在于:记录一下之前做过一次这个同类型的东西。也为…

无向图的深度优先遍历非递归_图算法总结

[TOC]图算法1、图的表示1.1、邻接矩阵(有向图、无向图、带权图、代码实现)1、无向图的邻接矩阵 2、有向图的邻接矩阵 3、带权值的图 有了上述的理解,我们可以设计数据结构,并实现了。C实现如下:#include1.…

华为ipd项目管理流程_IPD:一套卓越的产品开发经营体系

IPD全流程指的不仅仅是“产品开发流程”,而是如何实现产品“从机会到商业变现”的全流程。华为通过20年的全流程实践,才做到持续性推出高质量产品和解决方案。本期IPD全流程班,帮助企业研发管理者学习这套结构化流程,其中划下重点…

Springboot中@ComponentScan 注解

三个点: 1、工程中Application类的位置。默认情况下就不需要配置ComponentScan这个注解了。 因为Application类,在启动的时候,默认是加载和Application类所在同一个目录下的所有类,包括所有子目录下的类。所以一般情况下&#xff…

在react里写原生js_小程序原生开发与第三方框架选择

最近正在更新《微信小程序入门与实践》一书的第二版。书中有一章节谈到了”多样化的小程序开发“,摘取并加以整理分享给各位开发者。我一向不推荐也不提倡公众号阅读学习编程,文章更多的是列出小程序如今多样化的框架选择,并简单剖析它们之间…

springboot中service层注入的是实现类,但Controller层接收的是接口

我们习惯这样编写代码: 在service层写接口,然后用实现类去实现接口,并且将实现类注入到容器中 Service public class AccountServiceImpl implements AccountService {}在controller层却是用接口操作service的bean的方法, Auto…

mysql data transfer_MySQL主从同步加速 Transfer-- FAQ

Q: Transfer是什么A: 是一个解决MySQL原生主从同步延迟的方案。 Transfer本身是一个在MySQL源码上打的patch,可以用于当Slave,也可以用于当第三方工具,将Master的数据同步发给Slave。 利用多线程实现主从无延迟。Q: Transfer目前的发布形式&a…

springboot整合mybatisplus中@Mapper与@MapperScan的使用

一、Mapper与MapperScan不可同时使用 二、Mapper用于注解单个mapper接口 三、Mapper Scan用于批量注解Mapper接口 四、Mapper不起作用时,因为缺少下图中的依赖包 以上为自己整合框架中遇到的问题与解决方案,如果以上解决方案不能解决您的问题&#x…

html列表按时间排序代码_按字母顺序排序的列表

有时候你需要自制一份课件PPT或者手写笔记的关键词索引,用来开卷考试查阅PPT或者复习查阅笔记时能快速定位查阅内容位置,这时你可能想要一个按字母顺序排序的列表来帮助构建需要的索引。LaTeX自身的index本身并不支持这样的功能,修改起来也颇…

@MapperScan和@ComponentScan使用问题

报错如下 原因:当MapperScan和ComponentScan一起使用时,项目启动时扫描包会发生冲突,找不到swagger配置类的包和mapper接口的包 解决办法:MapperScan和ComponentScan可以一起使用。 改为MapperScan(basePackages {}…

C语言中CY位什么时候才能为1_你真的了解C语言中的整型吗?

整型数据类型1. 整型数据类型在上一节当中,我们遇到了整型(integer)int,用来表示一个整数的数据类型。下面呢我们来讨论一下C语言里面的整数数据类型。看到这里你可能想问,一个整数而已,为什么会需要定义这么多的类型出来呢?要知…

Spring的两种动态代理:Jdk和Cglib 的区别和实现

Spring的两种动态代理:Jdk和Cglib 的区别和实现 一、原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。 而cglib动态代理是利用asm开源包,对代理对象类的class文件…

red6.4 mysql_rhel6.4 yum本地yum源配置

rhel6.4 yum本地yum源配置 在安装rpm包时,总是会碰到关联的包,在安装过程中带来很多麻烦,配置yum源,自关联包安装,简单省事。配置步骤:1:mount -o loop 挂载镜像盘2:编辑rhel…

python怎么判断输入的是不是数字_如何在PYTHON里判断字符串是否为数字

1 打开JUPYTER NOTEBOOK,新建一个空白的PY文档。2 str1 "888" print(str1.isdecimal()) print(str1.isdigit()) print(str1.isnumeric()) 这是正常的整数,三种方法都是可以判断。3 str2 "二" print(str2.isdecimal()) print(str2.…