Pyinstaller安装:
Python模块的安装可以pip或者安装离线包,但Pyinstaller还依赖其他模块,pip安装会先安装其依赖的模块(而且悄咪咪说一句pip简单管用~~)所以我选择pip安装!
pip install pyinstaller
但是~~报错啦——加载时间过长timeout,原谅我当时没有截屏保存,又但是我带来了解决办法。
pip --default-timeout=2000 install pyinstaller
参考的文章:
Pyinstaller打包:
一句话概括——错错错~~~~怎么都是错~
1.打包后运行.exe可执行文件,出现闪退:
打包后在.py文件夹的目录下找到.spec文件,在hiddenimports中添加’pkg_resources.py2_warn’。
因为闪退问题看不到原因,所以可以在cmd下运行,可以看到出错原因,再进行相应的修改。
2.打包的程序依赖.txt文件:
在打包程序的过程中输入--add-data filename;.
然后把.txt文件放到生成.exe的文件夹,是这样啊!!
当然也可以修改.spec文件(元组形式),对应的是这样的:
3.我打包的是词云,还依赖jieba,wordcloud(jieba需要.dict.txt和idf.txt,wordcloud需要stopwords文件),又是错错错~
- 在别人的电脑上运行报错
在我自己的电脑上完美运行,但用老哥电脑尝试一下,它。。报错啦!原因是找不到xxx,因为我在打包过程中遇到文件找不到的情况 直接把对应的.py文件改成绝对路径,所以移植到别的电脑上没办法运行。改呗~
- 解决dict.txt
把dict.txt复制到.exe存在的目录下,并修改用到jieba的.py文件,添加:
import jieba
jieba.set_dictionary('./dict.txt')
jieba.initialize()
- 解决idf.txt(如果用到jieba.analyse的话)
把dict.txt复制到.exe存在的目录下,并修改用到jieba.analyse的.py文件,添加:
from jieba import analyse
jieba.analyse.set_idf_path("./idf.txt")
参考的文章:
- 解决stopwords问题
把stopwords复制到.exe存在的目录下,修改wordcloud.py(我的在这里D:\Anaconda3\Lib\site-packages\wordcloud):
#修改前
# FONT_PATH = os.environ.get('FONT_PATH', os.path.join(FILE, 'DroidSansMono.ttf'))
# STOPWORDS = set(map(str.strip, open(os.path.join(FILE, 'stopwords')).readlines()))
#修改后
FONT_PATH = os.environ.get('FONT_PATH', os.path.join(os.path.dirname(sys.executable), 'DroidSansMono.ttf'))
STOPWORDS = set(map(str.strip, open(os.path.join(os.path.dirname(sys.executable), 'stopwords')).readlines()))
参考的文章:
激动的心,颤抖的手~~自己和别人的机子都可以正常运行啦!!
番外篇:
1.pyinstaller打包单文件和多文件
单文件:pyinstaller -F filename.py
多文件:pyinstaller -D filename.py
单文件比多文件看起来更简洁,但运行速度可能会慢,看自己喜好吧~
2.pyinstaller参数,通过参数任自己设置生成的可执行文件呀!
参考文章:https://www.jianshu.com/p/5cfd179b73c3 第一次打包程序,到处报错,用了四天时间解决,所以也想把这个记录下来,希望对你们有用(就是完事儿才想写的,原谅我中间过程没有截屏),也希望自己以后也可以遇到问题积极解决,不要放弃,不要放弃,不要放弃!!!加油!!!