我正在尝试在 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 码的库吗?
最佳答案
pyqrcode 支持对二维码进行编码和解码。
关于 zbar,正如其他人所评论的那样,在不知道任何错误消息的情况下很难为您提供帮助。
您是从 Windows 二进制包还是源代码安装 zbar 的?
zbar 有一个预构建的 Windows 二进制包可用 here ,它
也有适用于 2.5 和 2.6 的 Python 模块的二进制文件 here 。
关于 zbar 安装,请参阅这些 zbar Installation Instructions
下面显示了根据上述链接从源代码安装 zbar Python 模块所需采取的步骤的摘要。
将
from distutils.sysconfig import get_config_vars
添加到第 3 行并将以下参数添加到扩展调用中:
library_dirs=["""zbarlibdirectory"""],
include_dirs=[get_config_vars('INCLUDEDIR'),
get_config_vars('INCLUDEPY'),
"""zbarincludedirectory"""]
其中 zbarlibdirectory 类似于
C:\zbar\lib
而 zbarincludedirectory 类似于 C:\zbar\include
python setup.py build --compiler=mingw32
python setup.py install
至于在 Windows7 上安装 pyqrcode,我还没有这样做,但相信你只是为了相关标题下的源代码说明,首先安装所有依赖项,然后使用 nmake 或来自 MinGW 的 make 运行 make 和 make install。
关于python - python的二维码解码器库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9310280/