最近做了一个词云项目,前期的数据收集就不再说了
前期一切正常顺利,py运行ok,打包后真是一言难尽,问题一堆一堆的
刚开始提示提示jieba中nolocal called语法错误错误指向matplotlib\__init__.py 411行
刚开始以为一次不能声明两个nonlocal,于是分开写成两行
执行,仍然报语法错误,
一顿焦头烂额之后,灵光乍现,是不是搞成Python2了,于是把pyinstaller卸载了,重新装了一遍
这个问题消失了.....消失了........
中间还有一堆问题我也记不住了
其中升级了setuptool还是steptool来着
升级了pyinstaller
升级了jieba
然后提示No such file or direction ...\...\...\..\stopwords
感觉要放弃了
再坚持一下试试
F i leNo t FoundError: [Errno 2] No such file or directory: ' C: Jsers VADMINI"IAp IpDataVLocalT empXl MEI 40842 wordc loudVs topwords '[72521 Failed to execute script c iyu
报错定位在wordcloud包里面
wordcloud.py第30行附近,打开之后是这样的
其实是绝对路径和相对路径问题,在py中运行时会定位文件的绝对路径(stopwords文件放在此位置),一旦打包exe,该路径此时已经没有意义了(还记得刻舟求剑的故事么?),此时要做就是将绝对路径改为相对路径,指向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")])
同时将初始的stopwords文件(这个自己可以搜出来)
也转移到该目录下(如果还想py也能跑,打包之后将该更改复位,好像改来改去有点麻烦,不如这样搞)留着备用
最后又提示empty separator
定位在wordcloud.py第29行
发现是split()切分字符串没有给出切分的参考字符
然后加了个“\n”运行ok了
这是问题解决之后总结的,所以中间过程记不详细了,遇到的问题比这要多的多了,下次要随时准备记录才好啊
最后感谢程序员大本营这篇文章给予的帮助
http://www.pianshen.com/article/996685916/