python 中使用 treepoem 模块你会遇到的坑

python 中使用 treepoem 模块你会遇到的坑

treepoem 模块简介

treepoem 模块可以方便创建多种条形码、二维码,与 qrcode 相比,它创建的种类丰富,缺点是速度慢,不支持中文。但若你决定要用 treepoem 后,这些坑是一定会遇到的,我也是花了不少时间才逐一解决,现在分享给大家!

代码量不多,就简单的几行就成创建二维码

import treepoem 

def generate_barcode(data,file,_type='code128',options=None):# 条形码或二维码
    # _type 为码类型,有:code128、datamatrix,....
    if options is None:
        options={"includetext":True} # 默认显示内容
    image = treepoem.generate_barcode(barcode_type=_type,data=data,options=options)  
    image.convert('1').save(file)

安装

与 python 大多模块安装方法相同

pip install treepoem

#建议用下面的命令,安装速度很会快
pip install treepoem -i https://pypi.douban.com/simple

如果这然你认为就完事了,那只能说 ”天真了!“
还需要安装 相关的模块 ghostscript

pip install ghostscript -i https://pypi.douban.com/simple

完了?还早着呢,可以试着运行下,会提示 ghostscript 模块没安装!!????
……
还需要安装 软件版的ghostscript —— GS,下载址:
https://www.ghostscript.com/releases/gsdnld.html

不急,还有很重要的一点,检查系统环境变量中,在 PATH 变量是否存在 C:\Program Files\gs\gs10.02.1\bin 路径,没有的话还需要手动添加(不会的就自行百度一下,系统环境变量的添加/修改),改完后还需要重启电脑才能生效

这时候应该可以运行通过了!!!

但时,它又埋下了一个更大的坑!!!!(卖个关先)

使用

正如前面的代码能生成 code128 条形码,但 treepoem 支持的码类太多了,下面选些常见的码说一下。
二维码  
qrcode:常见二维码,提供4种样式:标准、中心图标、背景、动太背景(前二个支持中文)
datamatrix:不支持中文字符
code16k:不支持中文字符
code49:不支持中文字符
azteccode:不支持中文字符
codeone:不支持中文字符
dotcode:不支持中文字符
maxicode:不支持中文字符
microqrcode:不支持中文字符
aztecrune:只能为 0~255之间的数值(包含0和255)

条形码  
code128:不支持中文字符
code93ext:不支持中文字符
code11:只能为纯数字
code32:必须为 8~9 位的数字,9位时最后一个为校验数
code39:只能为 数字、大写字母、空格或“-. / + c o d e 93 :只能为数字、大写字母、空格或“ − . /+% code93:只能为 数字、大写字母、空格或“-. /+code93:只能为数字、大写字母、空格或./+%
code93ext:只能为 ASCII码表中前128个字符
code39ext:不支持中文字符
pdf417:不支持中文字符
upca:必须为 11~12 位的数字,12位时最后一个为校验数
upce:必须为 7~8 位的数字,8位时最后一个为校验数
ean5:必须为 5 位的纯数字
ean8:必须为 7~8 位的数字,8位时最后一个为校验数
ean13:必须为 12~13 位的数字,13位时最后一个为校验数
pharmacode:必须为 6 位的纯数字
planet:必须为 11或14 位的数字
itf14:必须为 13~14 位的数字,14位时最后一个为校验数
auspost:必须为 10 位的纯数字
royalmail:只能为 数字或大写字母
kix:只能为 数字或大写字母

import treepoem 

def generate_barcode(data,file,_type='code128',options=None):# 条形码或二维码
    # _type 为码类型,有:code128、datamatrix,....
    if options is None:
        options={"includetext":True} # 默认显示内容
    image = treepoem.generate_barcode(barcode_type=_type,data=data,options=options)  
    image.convert('1').save(file)

这是最简单的应用,_type 可以换成上述的码类,数据 data 也要按上面的要求来,否则将出错!
其中 options 也是很重要的参数,为字典数据,我把常用的 key 说明一下

  • includetext : True 或 False 是否在条形码下方显示数据
  • barcolor : ‘000000’ 码图案颜色,注意与 tkinter 表示颜色的不一样,前面不能加 ‘#’
  • backgroundcolor : 背景颜色
  • textcolor : 文本数据颜色

image.convert(‘1’).save(file) 表示将二维码保存为黑白图片,如果要改变二维码的颜色,需要将代码改为:

image.convert('RGB').save(file)RGB

如果你的代码不需要打包成 exe ,那后面的坑就直接无视了

封装打包

pyinstaller 命令就不细说了,好容易打包好后你就掉坑里了,试运行时会出现出错提示:

FileNotFoundError: [Errno 2] No such file or directory: C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\treepoem\\postscriptbarcode\\barcode.ps

也就是说,treepoem 模块相关的文件没有封装到 exe 中,我经过多次掉坑和埋坑才找到解决方法,大家直接回埋就好了!!

打开目录:
C:\Users\Administrator\AppData\Local\Programs\Python\Python3xx\Lib\site-packages\PyInstaller\hooks
自己写个 hook 文件,然后放进去,文件名:hook-treepoem.py

文件内容:

from PyInstaller.utils.hooks import collect_data_files

datas = collect_data_files("treepoem")

恭喜你终于埋完 treepoem 全部的坑,重新打包后就可以正常使用了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jumpbull01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值