wordcloud打包缺失stopwords文件
错误描述
Unhandled exception in script
Failed to execute script'main' due to unhandled exception: (Errno 2] No such file or directory:
'C:\Users\VADMINI\appDatallLocal\Templ\2\ME186322\wordcloud\stopwords'
解决办法
找到安装wordcloud的路径下
默认在你python安装路径下的lib的这个文件夹下的wordcloud.py
打包时将以下代码
STOPWORDS = set(map(str.strip, open(os.path.join(FILE, 'stopwords')).readlines()))
改为
STOPWORDS = set(map(str.strip, open(os.path.join(os.path.dirname(sys.executable), 'stopwords')).readlines()))
改成是在执行exe程序时会去exe文件下的同级下寻找stopwords这个文件
可根据自己的配置需求更改文件位置,如下
STOPWORDS = set(map(str.strip, open(os.path.join(os.path.dirname(sys.executable), 'config','stopwords')).readlines()))
执行exe程序时会去exe文件下的同级目录下寻找config目录下stopwords这个文件
!!!开发环境时需要还原回去,或者保证你的stopwords文件可以在运行能被找到
pyinstaller 打包路径问题
python将资源文件一起打包进exe 讲解(有算例)
本人直接使用下边方法进行路径映射,将项目里的配置文件,直接拷贝一份到与exe文件同级目录下
import os
import sysdef file_address():if getattr(sys, "frozen", False):BASE_DIR = os.path.dirname(sys.executable)else:BASE_DIR = os.path.dirname(os.path.abspath(__file__))return BASE_DIR
pyinstaller 打包
需要运用的库
pip install pyinstaller
单个文件打包
cmd进入py项目目录,执行命令:
pyinstaller -F -w -i xxx.ico main.py --noconsole
或者:
pyinstaller -F -w --icon=xxx.ico main.py --noconsole
-F参数表示覆盖打包,这样在打包时,不管我们打包几次,都是最新的,固定命令。
-w表示窗体程序,
–icon是设置exe的显示图标,*.ico文件可以到网上ico矢量图在线转换工具处理。
'main.py’是程序的入口(如果是单个文件就换成文件名,如:hello.py),
–noconsole 表示不展示cmd窗口,反过来想看cmd窗口就改成–console。
常用打包命令:
打包exe:pyinstaller -F main.py
不带控制台的打包:pyinstaller -F -w main.py
打包指定exe图标打包:pyinstaller -F -i xx.ico main.py
多个文件打包
cmd进入py项目目录,执行命令:
pyinstaller [主文件] -p [其他文件1] -p [其他文件2] --hidden-import [自建模块1] --hidden-import [自建模块2]
如下:
pyinstaller -F -w --icon=testIcon.ico main.py -p addres.py -p test1.py -p test2.py --hidden-import addres --hidden-import test1 --hidden-import test2
打包成功
会在项目根目录下生成一下两个文件夹
在dist文件夹下会有一个xxx.exe,名字根据你打包的主文件.py进行命名,双击执行即可。
!!!若有配置文件的需要先将配置文件按照开发项目的目录结构先考呗一份到与exe同级目录下。