4

我正在尝试在 python 中构建一个可以编码和解码 QR 码的应用程序。我在编码器上很成功,但我没有找到用于在 python 中解码的库(但zbar)。我在 Windows 7 系统中使用 Python 2.7。

我无法在我的系统中安装zbar。我安装了库所需的依赖模块,即便如此,每当我尝试安装它时,我最终还是会遇到很多错误——zbar.h 和 zbarmodule.c 中有很多语法错误。我不明白为什么并且对问题所在一无所知。

安装 zbar 时出现以下错误

C:\Users\vijay>easy_install zbar
Searching for zbar
Reading http://pypi.python.org/simple/zbar/
Reading http://zbar.sourceforge.net
Best match: zbar 0.10
Downloading http://pypi.python.org/packages/source/z/zbar/zbar-0.10.zip#md5=9e99
ef2f6b471131120982a0dcacd64b
Processing zbar-0.10.zip
Running zbar-0.10\setup.py -q bdist_egg --dist-dir c:\users\vijay\appdata\local\
temp\easy_install-hv_kag\zbar-0.10\egg-dist-tmp-sxhz3s
zbarmodule.c
C:\Python27\include\zbar.h(685) : error C2054: expected '(' to follow 'inline'
C:\Python27\include\zbar.h(687) : error C2085: 'zbar_processor_parse_config' : n
ot in formal parameter list
C:\Python27\include\zbar.h(687) : error C2143: syntax error : missing ';' before
'{'
C:\Python27\include\zbar.h(761) : error C2054: expected '(' to follow 'inline'
C:\Python27\include\zbar.h(763) : error C2085: 'zbar_processor_error_spew' : not
in formal parameter list
C:\Python27\include\zbar.h(763) : error C2143: syntax error : missing ';' before
'{'
C:\Python27\include\zbar.h(768) : error C2143: syntax error : missing '{' before
'const'
C:\Python27\include\zbar.h(777) : error C2054: expected '(' to follow 'inline'
C:\Python27\include\zbar.h(778) : error C2085: 'zbar_processor_get_error_code' :
not in formal parameter list
C:\Python27\include\zbar.h(778) : error C2143: syntax error : missing ';' before
'{'
C:\Python27\include\zbar.h(882) : error C2054: expected '(' to follow 'inline'
C:\Python27\include\zbar.h(884) : error C2085: 'zbar_video_error_spew' : not in
formal parameter list
C:\Python27\include\zbar.h(884) : error C2143: syntax error : missing ';' before
'{'
C:\Python27\include\zbar.h(889) : error C2143: syntax error : missing '{' before
'const'
C:\Python27\include\zbar.h(897) : error C2054: expected '(' to follow 'inline'
C:\Python27\include\zbar.h(898) : error C2085: 'zbar_video_get_error_code' : not
in formal parameter list
C:\Python27\include\zbar.h(898) : error C2143: syntax error : missing ';' before
'{'
C:\Python27\include\zbar.h(968) : error C2054: expected '(' to follow 'inline'
C:\Python27\include\zbar.h(970) : error C2085: 'zbar_window_error_spew' : not in
formal parameter list
C:\Python27\include\zbar.h(970) : error C2143: syntax error : missing ';' before
'{'
C:\Python27\include\zbar.h(975) : error C2143: syntax error : missing '{' before
'const'
C:\Python27\include\zbar.h(984) : error C2054: expected '(' to follow 'inline'
C:\Python27\include\zbar.h(985) : error C2085: 'zbar_window_get_error_code' : no
t in formal parameter list
C:\Python27\include\zbar.h(985) : error C2143: syntax error : missing ';' before
'{'
C:\Python27\include\zbar.h(1050) : error C2054: expected '(' to follow 'inline'
C:\Python27\include\zbar.h(1052) : error C2085: 'zbar_image_scanner_parse_config
' : not in formal parameter list
C:\Python27\include\zbar.h(1052) : error C2143: syntax error : missing ';' befor
e '{'
C:\Python27\include\zbar.h(1141) : error C2054: expected '(' to follow 'inline'
C:\Python27\include\zbar.h(1143) : error C2085: 'zbar_decoder_parse_config' : no
t in formal parameter list
C:\Python27\include\zbar.h(1143) : error C2143: syntax error : missing ';' befor
e '{'
C:\Python27\include\zbar.h(1276) : error C2054: expected '(' to follow 'inline'
C:\Python27\include\zbar.h(1278) : error C2085: 'zbar_scan_rgb24' : not in forma
l parameter list
C:\Python27\include\zbar.h(1278) : error C2143: syntax error : missing ';' befor
e '{'
zbarmodule.c(65) : error C2143: syntax error : missing ';' before 'type'
zbarmodule.c(66) : error C2065: 'major' : undeclared identifier
zbarmodule.c(66) : error C2065: 'minor' : undeclared identifier
zbarmodule.c(68) : error C2065: 'major' : undeclared identifier
zbarmodule.c(68) : error C2065: 'minor' : undeclared identifier
zbarmodule.c(133) : error C2275: 'zbar_error_t' : illegal use of this type as an
expression
C:\Python27\include\zbar.h(121) : see declaration of 'zbar_error_t'
zbarmodule.c(133) : error C2146: syntax error : missing ';' before identifier 'e
i'
zbarmodule.c(133) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(134) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(134) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(134) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(135) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(135) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(136) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(146) : error C2275: 'PyObject' : illegal use of this type as an exp
ression
    c:\python27\include\object.h(108) : see declaration of 'PyObject'
zbarmodule.c(146) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(147) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(151) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(151) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(151) : warning C4024: 'PyModule_AddObject' : different types for fo
rmal and actual parameter 1
zbarmodule.c(152) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(152) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(152) : warning C4024: 'PyModule_AddObject' : different types for fo
rmal and actual parameter 1
zbarmodule.c(153) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(153) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(153) : warning C4024: 'PyModule_AddObject' : different types for fo
rmal and actual parameter 1
zbarmodule.c(154) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(154) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(154) : warning C4024: 'PyModule_AddObject' : different types for fo
rmal and actual parameter 1
zbarmodule.c(155) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(155) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(155) : warning C4024: 'PyModule_AddObject' : different types for fo
rmal and actual parameter 1
zbarmodule.c(156) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(156) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(156) : warning C4024: 'PyModule_AddObject' : different types for fo
rmal and actual parameter 1
zbarmodule.c(157) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(157) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(157) : warning C4024: 'PyModule_AddObject' : different types for fo
rmal and actual parameter 1
zbarmodule.c(158) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(158) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(158) : warning C4024: 'PyModule_AddObject' : different types for fo
rmal and actual parameter 1
zbarmodule.c(159) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(159) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(159) : warning C4024: 'PyModule_AddObject' : different types for fo
rmal and actual parameter 1
zbarmodule.c(160) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(160) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(160) : warning C4024: 'PyModule_AddObject' : different types for fo
rmal and actual parameter 1
zbarmodule.c(162) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(162) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(162) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(163) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(164) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(164) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(164) : warning C4024: 'PyModule_AddObject' : different types for fo
rmal and actual parameter 1
zbarmodule.c(164) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(164) : error C2065: 'ei' : undeclared identifier
zbarmodule.c(167) : error C2275: 'PyObject' : illegal use of this type as an exp
ression
    c:\python27\include\object.h(108) : see declaration of 'PyObject'
zbarmodule.c(167) : error C2065: 'dict' : undeclared identifier
zbarmodule.c(167) : error C2065: 'mod' : undeclared identifier
zbarmodule.c(167) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(167) : warning C4024: 'PyModule_GetDict' : different types for form
al and actual parameter 1
zbarmodule.c(169) : error C2065: 'dict' : undeclared identifier
zbarmodule.c(169) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(169) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(171) : error C2065: 'dict' : undeclared identifier
zbarmodule.c(171) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(171) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(183) : error C2275: 'PyObject' : illegal use of this type as an exp
ression
        c:\python27\include\object.h(108) : see declaration of 'PyObject'
zbarmodule.c(183) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(185) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(185) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(185) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(186) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(186) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(186) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(187) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(187) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(187) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(188) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(188) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(188) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(189) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(189) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(189) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(190) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(190) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(190) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(191) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(191) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(191) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(192) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(192) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(192) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(193) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(193) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(193) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(194) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(194) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(194) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(195) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(195) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(195) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(196) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(196) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(196) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
zbarmodule.c(197) : error C2065: 'tp_dict' : undeclared identifier
zbarmodule.c(197) : warning C4047: 'function' : 'PyObject *' differs in levels o
f indirection from 'int'
zbarmodule.c(197) : warning C4024: 'zbarEnumItem_New' : different types for form
al and actual parameter 1
error: Setup script exited with error: command '"C:\Program Files (x86)\Microsof
t Visual Studio 9.0\VC\BIN\cl.exe"' failed with exit status 2

谁能帮我安装 zbar 或者给我一个可以解码 QR 码的库?

4

1 回答 1

5

pyqrcode支持编码和解码二维码。

关于 zbar,正如其他人所评论的那样,在不知道任何错误消息的情况下很难为您提供帮助。

您是从 Windows 二进制包或源安装 zbar 吗?

zbar 在这里有一个预构建的 Windows 二进制包,它也有用于 2.5 和 2.6 的 Python 模块的二进制文件

关于 zbar 安装,请参阅这些zbar 安装说明

下面显示了基于上述链接从源代码安装 zbar Python 模块所需采取的步骤摘要。

  1. 安装 zbar(最好从 这里的二进制文件)
  2. 安装MinGW
  3. 将 Zbar\bin 和 MinGw\bin(二进制安装目录)添加到 Windows 路径变量
  4. 从此处下载 Zbar Python 模块源并将其解压缩到临时文件夹
  5. 修改 setup.py 脚本以使用自定义 zbar 包含和库路径。

    添加from distutils.sysconfig import get_config_vars到第 3 行,并将以下参数添加到 Extension 调用中:

        library_dirs=["""zbarlibdirectory"""],
        include_dirs=[get_config_vars('INCLUDEDIR'),
                      get_config_vars('INCLUDEPY'),
                      """zbarincludedirectory"""]
    

    其中 zbarlibdirectory 类似于C:\zbar\libzbarincludedirectory 类似于C:\zbar\include

  6. 使用修改后的 setup.py 安装 zbar Python 模块

    python setup.py build --compiler=mingw32

    python setup.py install

至于在 Windows7 上安装 pyqrcode,我还没有这样做,但相信您只是为了相关标题下的源代码说明,首先安装所有依赖项,然后使用 nmake 或来自 MinGW 的 make 运行 make 和 make install。

于 2012-02-16T11:44:36.443 回答