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的文件夹,是这样啊!!

pyinstaller打包时没有将comtypes打包进去 pyinstaller 打包报错_txt文件


当然也可以修改.spec文件(元组形式),对应的是这样的:

pyinstaller打包时没有将comtypes打包进去 pyinstaller 打包报错_python_02


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 第一次打包程序,到处报错,用了四天时间解决,所以也想把这个记录下来,希望对你们有用(就是完事儿才想写的,原谅我中间过程没有截屏),也希望自己以后也可以遇到问题积极解决,不要放弃,不要放弃,不要放弃!!!加油!!!