Python实现圣诞树、打包exe过程和遇到的问题
Python实现圣诞树、打包exe过程和遇到的问题
昨天看到CSDN推荐的Python生成圣诞树的博客,想着圣诞节也没给女朋友送过什么礼物,决定这个python脚本改成可执行文件然后作为她今年的礼物(偷懒)。本以为是个很轻松的过程,但是python转exe的过程发生了很多问题,主要是由WordCloud这个包导致的。在此记录一下解决过程。
参考博客
- 圣诞节到了,写一个炫酷的圣诞树和平安果,送给你最爱的人吧
- 如何将python文件打包成exe格式
- Python程序打包成.exe(史上最全面讲解)
- pyinstaller、jieba、wordcloud打包exe过程中遇到的问题总结一下
- OSError: cannot open resource 错误原因及解决方法
圣诞树Python文件
首先是Python程序和WordCloud库的安装,步骤较为简单,根据大佬的博客 圣诞节到了,写一个炫酷的圣诞树和平安果,送给你最爱的人吧即可完成,产生的效果如下图所示。这里就直接扒了大佬博客中的图片过来了,就不自己再生成一张了。
根据对象的不同可以更改christmas.txt文件中的内容,改变生成词云圣诞树的内容,这里推荐是狗屁不通文章生成器+谷歌翻译,直接给她整个花里胡哨的。想要啥词大一点就多复制几遍就完了。
Python To Exe
需要安装pyinstaller包,进入目标路径后运行
pyinstaller -F ChristmasTree.py
输出可以得到这样几个文件
进入dist文件夹可以得到可执行文件(PS:其他的文件是我自己后面放进去的,上面的命令只会在该文件夹生成一个可执行文件)
Error
运行exe文件时出现的第一个问题就是no such file or dicrectory:‘C:\…\_MEI17545602\wordcloud\stopwords’
根据Traceback显示问题出在wordcloud\wordcloud.py文件第三十五行的位置,如下图所示。
这里的问题绝对路径和相对路径,在绝对路径中这个文件是并不存在的(报错的哪一行),而且每次运行时_MEI17xxxxx这个文件夹名称都会发生改变,在此我们根据pyinstaller、jieba、wordcloud打包exe过程中遇到的问题总结一下的修改方案将其修改为
FONT_PATH = os.environ.get('FONT_PATH', os.path.join(os.path.dirname(sys.executable), 'DroidSansMono.ttf'))
STOPWORDS = set([x.strip() for x in open(os.path.join(os.path.dirname(sys.executable),'stopwords')).read().split("\n")])
请注意在打包完之后将这里恢复,否则py存在问题
然后按照上面的步骤打包程序,再搜索将stopwords文件放到exe文件所在目录下。
再次运行exe文件,出现了另一个OSerror:cannot open resource。
我查询了许多博客显示的都是font_path存在的问题,但是本文代码中根本没有采用font_path,我根据OSError: cannot open resource 错误原因及解决方法修改了py文件,添加了font_path并且将字体文件复制到当前目录下,如上图中的STIXGeneral.ttf。再次打包文件运行exe,此时就可以运行了。不过还是需要吐槽一句文件300多MB,也就画了一个图。
后记
十分感谢参考博客各位大佬的文章,如有错误,肯请海涵。另外写此文时发现第二个问题,即OSerror存在问题的原因应该是由于修改第一个问题时也改动了font_path路径导致的,并且默认采用的是DroidSansMono.ttf。那么此时解决第二问题的另一方法是直接找到DroidSansMono.ttf文件复制到目标路径下即可,无需修改Py文件代码添加font_path了。
Python实现圣诞树、打包exe过程和遇到的问题相关推荐
- Python 使用pyinstaller打包exe文件报错: TypeError: an integer is required (got type bytes) 的解决方法
python打包成exe文件首先需要安装pyinstaller库,再进入到目标文件目录,输入命令行打包py文件,但出现报错:TypeError: an integer is required (got ...
- python源码打包exe、exe反编译
一.python3打包为exe文件 这里有个hello.py文件 step1:安装pyinstaller包 pip install pyinstaller step2:在cmd中进入hello.py文 ...
- windows开机运行python脚本_python打包exe开机自动启动的实例(windows)
一.背景 简单的写个.exe程序,没必要去学习mfc.c++等,可以学习python.python可以轻易的调用windows的api,轻松的实现你想干的事.下面就是实现打包的exe文件开机自动运行. ...
- python 打包exe过程中找不到某模块路径解决
1.首先 写一个启动程序的启动文件 import oscmd = "python " + r"C:\Users\JHC\Desktop\red\SecurityCheck ...
- python+Web自动化打包exe+配置文件
引言:简单的打包单个没有依赖关系的.py文件很简单,但是想要运用到框架的没几个博客.我找了好多博客都很水,什么喂饭教程,太水了,还是没有实现打包. 本文仅仅引用一篇博客链接:我的思路就是从这个链接来的 ...
- Python使用py2exe打包exe程序
py2exe可以将Python程序打包成exe程序,使得可以在没有Python环境的机器上运行. 首先编写一个hello_test.py文件: from time import sleepif __n ...
- python 打包exe_python pyinstaller打包exe报错的解决方法
今天用python 使用pyinstaller打包exe出现错误 环境pyqt5 + python3.6 32位 在导入pyqt5包之前加上如下代码 import sys import os if h ...
- python pyinstaller 打包exe文件,(附带图片 + 自己、别人电脑上均可以运行)
python pyinstaller 打包exe文件,(附带图片 + 自己.别人电脑上均可以运行) 科目:windows + python pyinstaller 打包exe 内容:打包程序.图片.视 ...
- python 打包 exe_python pyinstaller打包exe报错的解决方法
今天用python 使用pyinstaller打包exe出现错误 环境pyqt5 + python3.6 32位 在导入pyqt5包之前加上如下代码 import sys import os if h ...
最新文章
- 美国重夺超算“头把交椅”,专家建议中国加快E级超算研制
- 程序员面试题精选100题(46)-对称子字符串的最大长度[算法]
- Maven 配置文件 POM 的常用插件配置代码
- Jerry答网友提问:SAP CRM WebClient UI里的EXT,STRUCT等含义
- 找出数组中第i小元素(时间复杂度Θ(n)--最坏情况为线性的选择算法
- golang---map类型
- error while loading shared libraries: libstdc++.so.6: cannot open shared object file
- java观察者模式本质_6.[研磨设计模式笔记]观察者模式
- springboot如何使用log4j记录日志
- 记一次java-selenium自动抢红包最简单案例1
- BXP无盘Windows XP网吧系统好处(转)
- C++ opencv人脸识别框
- 直流稳压稳流电源基本功能,电源使用注意事项
- Docker容器设置自动启动的方法
- Windows环境下Nginx配置本地虚拟域名和Nginx代理
- 二级计算机考试准考证打印入口
- unity----lua调用c#之lua调用c#中的数组,list,字典
- 现在做硬件工程师还有前途吗?
- 304、bootstrap 之 图片样式
- Chrome 操作系统