首先,我知道这个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号将是这样的
然后,我可以使用PIL
来检测黑白方块并将其转换回二进制,然后转换为十进制。仅供参考,我只处理十进制数字。没有字母和其他东西。我知道这是非常愚蠢但绝望的时候需要绝望的措施:P
答案 0 :(得分:3)
当依赖DLL位于PATH
的某个位置时,听起来它正在工作,并且当您将它们移动到其他位置时,它会中断。该错误明确指出它无法加载DLL(或其中一个依赖项),因此我认为这不是与Windows系统上记录的不稳定性相关的问题。
要消除这种可能性,请尝试以下方法:
PATH
条目,然后点击修改。在对话框中,显示变量值,添加分号,然后添加已安装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