废话不多说,反正我现在还没成功,不过我记录一下遇到的坑!

1:安装相关库太慢

解决办法:离线安装

在一大堆教程中,要安装好几个库,但是有些库用pip在线安装一直卡死(看不到进度条,就当卡死吧),这个问题可以使用离线安装来解决,下面附上解决过程!

安装错误提示(其实是太慢了,我强制停止了)

$ pip install pywin32
Collecting pywin32
Downloading https://files.pythonhosted.org/packages/a3/8a/eada1e7990202cd27e58eca2a278c344fef190759bbdc8f8f0eb6abeca9c/pywin32-224-cp37-cp37m-win_amd64.whl (9.0MB)
ERROR: Operation cancelled by user

  

解决方法如下:

首先找到这个库的下载链接,在这里的就是:

https://files.pythonhosted.org/packages/a3/8a/eada1e7990202cd27e58eca2a278c344fef190759bbdc8f8f0eb6abeca9c/pywin32-224-cp37-cp37m-win_amd64.whl

 

然后使用其他HTTP下载工具,我用的是IDM,也可以使用浏览器!

然后打开存放目录,

然后在这里打开命令行,执行

pip install pywin32-224-cp37-cp37m-win_amd64.whl

  

因为我的已经安装了,当时没截图,我也懒得卸载了,反正就是后面接上库文件就行了(输入文件名第一个字母之后,按TAB键可以补全)

然后到这里第一个坑就解决了,这个方法适合所有库的安装(官方太慢的时候或者需要安装第三方库)!!

第二个坑,调试没问题,运行就报错(代码错误)

在这里我确定使用py文件运行是没问题的,但是打包之后却提示我没有定义exit变量/函数(exit是系统变量)

对于这个问题我暂时的解决办法有两个,要么舍弃这个退出功能,否则无法打包,要么定义这个函数!

我的退出原代码为,这样子是打包不了的,至少我打包的时候是这样

bt_exit = tk.Button(win, text="更新软件", font=("宋体", 15), command=exit).place(x=500, y=250)

  

可以参考这个方法----python 退出程序方法

怎么去定义我就不细说了,能写出程序的人看了这个方法都会懂的

那么第二个坑就解决了(虽然我发现定义了之后点击退出却没有反应,这个可以点X关闭,所以我就先不管了)

第三个坑:运行提示Failed to execute script main

首先,执行构建命令:

pyinstaller -F 主程序.py

  

然后查看文件列表

将配置文件(背景文件)放在一起!

最后运行程序!----------------------居然不报错了!

​其实呢,在我之前的构建中是报错的,错误提示是

Failed to execute script

  

在这里我也顺便说一下理论能解决这个错误的方法

首先确保所需文件都在你写的相对目录里,例如我这个程序调用的背景写的是

impath = 'timg.jpg'
img = Image.open(impath)

  

所以这个timg.jpg是跟主程序在同一级目录的,这时候你就需要把这些调用的文件放在所在的目录,然后在构建文件编辑一下,方法如下:

找到这个.spec文件,使用文本编辑(在这里我用vim工具),下面第二张图(VIM);

windows用户建议使用Notepad++,下面第三张图(Notepad++)

反正就是在.spec里面修改一下参数,首先找到

a = Analysis

  

然后找到参数datas,在后面加上你需要调用的文件名(不在同级目录的要写路径加文件名),例如我这里要调用的是timg.jpg文件,而这个文件和程序在同一目录,那么参数就是

datas=['timg.jpg'],

  

假如我的代码写的是程序目录下的bg目录下的timg.jpg文件,那么参数就要写成

datas=['bg\timg.jpg'],

  

为避免出现各种错误,如果是小的程序,建议全部调用文件放在程序根目录!那么到这里也就成功一半了(总不能把程序发给别人的时候还要带上配置文件吧)!

接下来继续压缩!

在打包程序的时候是不会打包图片文件的,但是我们可以把图片文件转为py文件,所以解决这个背景问题的关键点就是这个了,下面附上一些别人的教程!

Pyinstaller 使用+打包图片方法

下面是我的打包记录。

首先安装相关库

pip install img
pip install base64

  

然后新建一个py文件,内容如下

#image转base64
import base64
with open("timg.jpg", "rb") as f:#转为二进制格式
base64_data = base64.b64encode(f.read())#使用base64进行加密
print(base64_data)
file = open('1.txt', 'wb')#写成文本格式
file.write(base64_data)
file.close()

  

上面的代码需要注意的就是变量,变量解释如下

"timg.jpg" #需要转换的图片文件
"bg.py" #要生成的图片PY文件

  

运行之后得到下面的数据----很长很长的,如果你得到的是很短的,那就考虑一下是不是图片原文件出问题了,还有一个更快的方法,在线转换

http://imgbase64.duoshitong.com/

然后得到这个开头的编码
data:image/jpeg;

  

转换之后就需要调用,调用方法如下

首先需要导入base64库以及OS库

所以需要添加的代码有两部分,第一部分是库导入

import base64
import os

  

第二部分则是创建临时文件的代码

strs = '''...............//Z\n\n\n\n\n \n\n\n'''
imgdata = base64.b64decode(strs)
file = open('timg.jpg', 'wb')
file.write(imgdata)
file.close()

  

上面的strs中,填写的方法为在下面这段代码中插入从网页获取到的图片转base4的加密信息

import os,base64
strs='''图片编码放这里,其他不要动\n\n\n\n\n \n\n\n'''
imgdata=base64.b64decode(strs)
file=open('1.jpg','wb')
file.write(imgdata)
file.close()

  

上面的代码中,1.jpg表示新生成的图片文字,这个要根据你的实际需求进行更改

那么,到这里就变相解决了无法打包图片文件的问题了,接下来重新封装程序看看

Python程序打包EXE遇到的各种坑的更多相关文章

  1. python程序打包exe文件

    第一步:安装依赖 pip install pyinstaller 第二步:移动文件 把python文件和一个exe拿来当图标的ico文件移动到同一文件中 注意:文件路径不用用中文!!!!!!!! 第三 ...

  2. python程序打包exe

    http://c.biancheng.net/view/2690.html 用inno setup做成安装包(官网上下载) http://www.jrsoftware.org/isdl.php

  3. 将Python程序打包为exe方法

    将Python程序打包为exe文件,需要使用到的工具是pyinstaller pyinstaller是一个多平台的Python程序打包为exe的免费工具 安装pyinstaller: 1,在Windo ...

  4. Python 程序打包成 exe 可执行文件

    Python 程序打包工具 Python 是一个脚本语言,被解释器解释执行.它的发布方式: .py 文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装 Python 并且安装依赖 ...

  5. Python程序打包为可执行文件exe

    Python程序打包为可执行文件exe,pyinstaller应用 山重水复疑无路,柳暗花明又一村. 本来是向老师提交一个python程序,因为第一次所以就很尴尬只把源码给老师了,应该是打包成一个可执 ...

  6. python程序打包工具 ── cx_Freeze

    cx_Freeze是一个类似py2exe的工具,它们区别是py2exe是将python程序打包成windows下可以执行的exe文件的,而cx_Freeze则是将python程序打包为linux下可以 ...

  7. Python:使用Kivy将python程序打包为apk文件

    1.概述 Kivy是一套Python下的跨平台开源应用开发框架,官网,我们可以用 它来将Python程序打包为安卓的apk安装文件.以下是在windows环境中使用. 安装和配置的过程中会下载很多东西 ...

  8. python程序打包

    环境: CentOS6.5_x64Python版本 : 2.6 使用pyinstaller打包 pyinstaller可以将python程序打包成二进制文件,打包后的文件在没有python的环境中也可 ...

  9. install4j 工具为java程序打包exe

    用 install4j 工具为java程序打包exe 制作人:mark 制作时间:2013-05-02 用Eclipse 将程序源码打包成jar文件. 打包jar方法我不做介绍了,相信大家都会,不会的 ...

随机推荐

  1. .NET Core 3.1之深入源码理解HealthCheck(二)

    写在前面 前文讨论了HealthCheck的理论部分,本文将讨论有关HealthCheck的应用内容. 可以监视内存.磁盘和其他物理服务器资源的使用情况来了解是否处于正常状态. 运行状况检查可以测试应 ...

  2. 「UVA12004」 Bubble Sort 解题报告

    UVA12004 Bubble Sort Check the following code which counts the number of swaps of bubble sort. int f ...

  3. Spring中常见的设计模式——模板模式

    一.模板模式的应用场景 模板模式又叫模板方法模式(Template Method Pattern),指定义一个算法的骨架,并允许自雷为一个或者多个步骤提供实现.模板模式使得子类可以在不改变算法结果的情 ...

  4. 单用户登陆demo-后者挤到前者,类似QQ

    单用户登陆demo ,采用的是Tp5. 流程是,当用户首次登陆是验证用户帐号密码,成功的,用当前时间戳加上用户id和ip 拼接成一个标识,暂且sign ,然后存入cookie ,时间戳存入缓存redi ...

  5. schedule of 2016-10-17~2016-10-23(Monday~Sunday)——1st semester of 2nd Grade

    most important things to do 1.joint phd preparations 2.journal paper to write 3.solid fundamental kn ...

  6. 别再埋头刷LeetCode之:北美算法面试的题目分类,按类型和规律刷题,事半功倍

    算法面试过程中,题目类型多,数量大.大家都不可避免的会在LeetCode上进行训练.但问题是,题目杂,而且已经超过1300道题. 全部刷完且掌握,不是一件容易的事情.那我们应该怎么办呢?找规律,总结才 ...

  7. GitHub 标星 2.4w+,最适合编程新手入门的宝藏项目推荐

      照惯例这周给大家推荐几个Github上高星的优秀项目,我的github:图灵的猫 ,也欢迎大家follow~ 下面这是第一个,也是首推的新手入门项目,以前我入门的时候如果有这样一个项目,知识广度和 ...

  8. ArcEngine 创建线要素图层

    在创建要素图层的时候,默认的几何类型是Polygon: Dim objectClassDescription As IObjectClassDescription = New FeatureClass ...

  9. unbuntu18.04安装启用splash

    官网:https://splash.readthedocs.io/en/stable/ 1.安装Docker https://www.cnblogs.com/wt7018/p/11880666.htm ...

  10. 第二阶段冲刺个人任务——seven

    今日任务: 整体运行测试上传到公网上的程序. 昨日成果: 搭建网络服务器,上传数据库及程序.