aliyaduo 发表于 2024-7-22 06:53

python使用python-barcode生成条码,打包后报错解决

本帖最后由 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

纯黑枫鸢 发表于 2024-7-22 15:04

这个困扰了我很久,,,放弃了很多次 我都是在我PYCHARM上用着没事一打包EXE 就这不行那不行了 无语死 最后用的VBA

aliyaduo 发表于 2024-7-23 07:49

纯黑枫鸢 发表于 2024-7-22 15:04
这个困扰了我很久,,,放弃了很多次 我都是在我PYCHARM上用着没事一打包EXE 就这不行那不行了 无语死 最 ...

我也是,研究了老半天才搞定
页: [1]
查看完整版本: python使用python-barcode生成条码,打包后报错解决