Python Zbar DLL加载失败

时间:2013-12-13 00:57:09

标签: python dll importerror zbar

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

我已从 http://zbar.sourceforge.net/download.html 下载 Zbar Installler ,并成功安装(无错误消息)。

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

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加载失败。

  

追踪(最近一次呼叫最后一次):

     

文件“D:\ Profiles \ e492507 \ Desktop \ barcode reader \ test.py”,第1行,in          import zbar ImportError:DLL加载失败:找不到指定的模块。

但与上面提到的类似SO问题不同,当我在python IDLE shell中输入它时,它没有任何问题。

import zbar
zbar.version()
  

(0,10)

导致问题的原因是什么?如何解决?

仅供参考:我在Windows Xp pro 32位上使用Python 2.7.3

更新:1

我发现如果我将脚本和图像复制到python目录C:\Python27\中,它可以正常工作。

但是,只要我将脚本和图像移动到其他地方,我就会收到上面发布的相同错误消息。

我应该如何修复此问题,以便只要条形码图像可用,我就可以在计算机的任何位置执行我的脚本?

更新:2 (仅供参考:与问题没有直接关系)

到目前为止,我无法使用我发现的所有方法来解决这个问题。所以,我正在推出自己的愚蠢解决方案。

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

所以,69号将是这样的

enter image description here

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

3 个答案:

答案 0 :(得分:3)

当依赖DLL位于PATH的某个位置时,听起来它正在工作,并且当您将它们移动到其他位置时,它会中断。该错误明确指出它无法加载DLL(或其中一个依赖项),因此我认为这不是与Windows系统上记录的不稳定性相关的问题。

要消除这种可能性,请尝试以下方法:

  1. 右键单击我的电脑,然后单击属性
  2. 点击高级标签。
  3. 点击环境变量
  4. 找到并选择PATH条目,然后点击修改
  5. 在对话框中,显示变量值,添加分号,然后添加已安装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脚本。

答案 1 :(得分:1)

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

ZBar bar code reader - Download页面的 Windows Installer 部分中,它显示:

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

换句话说,它还没有被认为可以从Windows版本的Python解释器中使用。

答案 2 :(得分:-1)

解决.dll错误,需要安装C++依赖,点击下方链接下载:

https://www.microsoft.com/en-US/download/details.aspx?id=40784