Treepoem 条码生成器无法找到 ghostscript

Posted

技术标签:

【中文标题】Treepoem 条码生成器无法找到 ghostscript【英文标题】:Treepoem barcode generator unable to find ghostscript 【发布时间】:2017-08-22 23:36:12 【问题描述】:

我正在尝试使用 treepoem 在 python 中生成 pdf417 条形码,但 pycharm 不断给我以下错误:

Traceback(最近一次调用最后一次):

文件“C:/Users/./Documents/barcodes.py”,第 175 行,在 image = generate_barcode(barcode_type="pdf417",data=barcode, options=dict(eclevel=5, rows=27, columns=12)) 文件“C:\Users.\AppData\Local\Programs\Python\Python36-32\lib\site-packages\treepoem__init__.py”,第 141 行,在 generate_barcode bbox_lines = _get_bbox(代码) 文件“C:\Users.\AppData\Local\Programs\Python\Python36-32\lib\site-packages\treepoem__init__.py”,第 81 行,在 _get_bbox ghostscript = _get_ghostscript_binary() _get_ghostscript_binary 中的文件“C:\Users.\AppData\Local\Programs\Python\Python36-32\lib\site-packages\treepoem__init__.py”,第 108 行 “无法确定 ghostscript 的路径,是否已安装?” treepoem.TreepoemError: 无法确定 ghostscript 的路径,是否已安装?

我尝试安装ghostcript,使用我在网上找到的.exe 和使用pip install ghostscript(第一次成功完成,现在告诉我要求已满足),但我仍然不断收到此错误。关于如何解决它的任何想法?

【问题讨论】:

【参考方案1】:

您在 Windows 上进行安装,Windows 二进制文件的名称与 Linux 二进制文件的名称不同,并且确实有所不同,具体取决于您安装的是 64 位还是 32 位版本。

在 Linux(和 MacOS)上,Ghostscript 二进制文件称为“gs”,在 Windows 上称为“gswin32”或“gswin64”或“gswin32c”或“gswin64c”,具体取决于您需要 32 位还是 64 位版本,以及命令行或窗口可执行文件。

我的猜测是您的脚本正在寻找简单的“gs”并且可能期望路径位于 $PATH 环境变量中,我不清楚它的期望。

您可以通过确保安装路径位于 $PATH 环境变量中并将可执行文件复制到该目录中的“gs.exe”来“修复”此问题。

除此之外,您还需要有人可以告诉您脚本在寻找什么。很可能你可以直接用 grep 解析它。

【讨论】:

【参考方案2】:

另一种解决方案是编辑 C:\Users\Windows.UserName\AppData\Local\Programs\Python\Python37\Lib\site-packages\treepoem__init__.py

脚本正在寻找gs.exe,如下图改为gswin32.exe。

然后在 windows 的 PATH 中添加 GhostScriptInstallDir\bin。

def _get_ghostscript_binary():
    binary = "gswin32" # changed from 'gs' to 'gswin32'

    if sys.platform.startswith("win"):
        binary = EpsImagePlugin.gs_windows_binary
        if not binary:
            raise TreepoemError(
                "Cannot determine path to ghostscript, is it installed?"
            )

    return binary

【讨论】:

以上是关于Treepoem 条码生成器无法找到 ghostscript的主要内容,如果未能解决你的问题,请参考以下文章

打印条码/条码字体的问题

什么会导致从 netbarcodewriter 库生成的 Code128 条码无法扫描?

vs asp.net水晶报表打印时无法显示条码

EAN-128/GS1-128条码冲突

Delphi用FastReport做一维条码,因为内容多,无法在条码纸上显示全,如图,怎样让一维码缩短并能扫描?

无法加载库“gsdll32”