Python Zbar DLL加载fai

2024-06-16 11:14:03 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我知道这个问题,但我的问题稍有不同,这个问题的答案并没有解决我的问题。所以,我在这里创建一个新的帖子。在

我已经从http://zbar.sourceforge.net/download.html下载了Zbar installer,并成功安装(没有错误消息)。在

但是,当我运行以下脚本时

import zbar
from PIL import Image

# create a reader
scanner = zbar.ImageScanner()

# configure the reader
scanner.parse_config('enable')

# obtain image data
pil = Image.open('zbartest2.png').convert('L')
width, height = pil.size
raw = pil.tostring()

# wrap image data
image = zbar.Image(width, height, 'Y800', raw)

# scan the image for barcodes
scanner.scan(image)

# extract results
for symbol in image:
    # do something useful with results
    print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data

# clean up
del(image)

它会给我一条错误消息说DLL加载失败。在

Traceback (most recent call last):

File "D:\Profiles\e492507\Desktop\barcode reader\test.py", line 1, in import zbar ImportError: DLL load failed: The specified module could not be found.

但与我上面提到的类似的SO问题不同,当我在python空闲shell中键入这个问题时,它的工作没有任何问题。在

^{pr2}$

(0, 10)

问题的起因是什么?我如何解决它?在

仅供参考:我正在WindowsXPPro上使用32位的Python2.7.3

更新:1

我发现,如果我将脚本和图像复制到python目录C:\Python27\,它可以正常工作,没有任何问题。在

然而,当我把脚本和图像移到其他地方时,我收到了上面发布的同样的错误消息。在

我应该如何解决这个问题,这样只要条形码图像可用,我就可以在计算机的任何地方执行脚本?在

更新:2(仅供参考:与问题无关)

我不能用我发现的所有方法来解决这个问题到目前为止,我会拿出我自己愚蠢的解决方案。在

我将使用一个由reportlab而不是Barcodes绘制的简单表格,并相应地为单元格着色(1为黑色,0为白色),以表示二进制中的数字。在

所以,69号应该是这样的

enter image description here

然后,我可以使用PIL来检测黑白方块,并将其转换回二进制然后转换成十进制。仅供参考,我只处理十进制数。没有字母表或其他东西。我知道这是相当愚蠢的,但绝望的时刻需要绝望的措施:P


Tags: the图像imageimport脚本消息datapil
2条回答

您安装的zbar的Windows版本(zbar-0.10-setup.exe)包含“仅命令行程序”,如其README.windows文件中所述。在Windows Installation Guide运行ZBar部分中,还提到“ZBar的当前(0.10)版本只附带命令行程序”。在

ZBar bar code reader - Download页面的Windows安装程序部分显示:

请注意,Windows端口处于不稳定的测试阶段

换句话说,它还不能从Windows版本的Python解释器中使用。在

当依赖DLL位于PATH中的某个位置时,它似乎在工作,当您将它们移到其他位置时,它就会中断。错误是明确地说它不能加载DLL(或它的一个依赖项),所以我认为这不是与Windows系统上记录的不稳定性有关的问题。在

要消除这种可能性,请尝试以下操作:

  1. 右键单击我的电脑,然后单击属性。在
  2. 单击高级选项卡。在
  3. 单击环境变量。在
  4. 找到并选择PATH条目,然后单击编辑。在

在对话框中,它显示Variable value,添加一个分号,然后添加到安装了libzbar-0.dll的文件夹的路径。在

因此,如果libzbar-0.dll在,比如说,C:\ZBar\Bin中,而您现有的PATH值是:

C:\folder1;C:\folder2;C:\some other folder

然后将变量值更改为:

C:\folder1;C:\folder2;C:\some other folder;C:\ZBar\Bin

然后单击确定保存所有更改并重新启动(对于过度终止)。这是因为大多数应用程序只在第一次启动时读取环境变量,例如,如果您不确定某个应用程序是否真的重新启动了,或者只是最小化了,那么有时会令人困惑。在

现在看看是否可以从其他文件夹运行Python脚本。在

相关问题 更多 >