好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 aliyaduo 于 2024-7-23 07:55 编辑
最近用pySide6写了个生成条形码并调用打印机打印的桌面端应用,生成条形码的库是python-barcode,在pyCharm中运行时没有毛病,使用pyinstaller 打包成exe后,点击生成条形码没有反应。经过一番调试,终于找到错误所在,谨此发帖,留作笔记,也希望能帮到别人。
排查过程如下:
1.改用显示命令行的方式打包,查看错误信息
2.根据命令行提示的错误信息,推断为缺失字体文件
3.在生成条形码的地方打印一下字体路径,看看打包后程序在何处使用字体文件,只需要将字体文件复制到那个文件夹中即可。
代码如下:
writer = ImageWriter()
print("generate_barcode_with_text:",writer.font_path)
# ImageWriter.font_path='DejaVuSansMono.ttf' #我曾尝试自定义字体路径,但barcode似乎没有提供这个方法,直接赋值也不行
print("generate_barcode_with_text:",writer.font_path)
barcode = generate('code128', data, writer=writer, output=output_path)
再打包后,查看命令行打印的路径,将需要的字体文件放入该路径即可。
再来个方便的办法:在pyinstaller 打包时,添加 -- collect-data barcode 参数,直接将整个barcode库的资源打包进exe。
命令:pyinstaller --onefile --windowed --collect-data barcode your_python.py |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|