windows平台python 2.7环境编译安装zbar

最近一个项目需要识别二维码,找来找去找到了zbar和zxing,中间越过无数坑,总算基本上弄明白,分享出来给大家。

一、zbar官方介绍

ZBar 是款桌面电脑用条形码/二维码扫描工具,支持摄像头及图片扫描,支持多平台,例如 iPhone,Andriod 手机,同时 ZBar封装了二维码扫描的 API 开发包。

ZBar 目前条码类型有:EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR Code.

从上可以看出,zbar有挺多优势,封装了API,支持多平台,支持多种条码类型,包括一维、二维码。

具体主页:http://zbar.sourceforge.net/

二、zbar的python安装

进入https://pypi.python.org/pypi/zbar,可以看到最新版本是0.10,提供源码以及python2.5、python2.6下的exe版本。

File Type Py Version Uploaded on Size
zbar-0.10.tar.bz2 (md5, pgp) Source   2009-11-10 15KB
zbar-0.10.tar.gz (md5, pgp) Source   2009-11-10 18KB
zbar-0.10.win32-py2.5.exe (md5, pgp) MS Windows installer 2.5 2009-11-10 74KB
zbar-0.10.win32-py2.6.exe (md5, pgp) MS Windows installer 2.6 2009-11-10 205KB
zbar-0.10.zip (md5, pgp) Source   2009-11-10 31K
 

结论:没有whl,没有python2.7的exe安装,更不奢望64位版本之类。

1、pypi网址,找whl或者exe安装包

百度找到非官方发布的python2.7下zbar安装文件,https://github.com/jacobvalenta/zbar-py27-msi/blob/master/zbar-0.10.win32-py2.7_2.msi。

实测可用,这里为了说明pypi的编译过程,不使用该方案。

2、pypi源码安装

2.1、配置mingw编译环境

windows系统安装并配置mingw编译器,是另一个大坑,爬坑的过程不细说,简要描述如下:

1、下载mingw 5.1.6 ,地址如下:http://d1.rsdown.cn/soft1/mingw5.1.6.zip
2、解压后,双击其中的mingw.exe进行安装,选择常用的安装包,例如gcc等。
3、配置mingw安装路径,参看:http://blog.csdn.net/wangrouyi/article/details/7454687(注意,这个说明中的mingw是按照在d:\mingw下,如果你是安装在c盘,则要改成c:\mingw。)

右击我的电脑,点属性->高级->环境变量。然后:
1)、在PATH里加入D:\MinGW\bin,记得,如果里面还有其他的变量,记得要加个分号啊,分号得在英文输入模式下输入的。
2)、新建LIBRARY_PATH变量,如果有的话,在值中加入D:\MinGW\lib,这是标准库的位置。
3)、新建C_INCLUDEDE_PATH变量,值设为D\MinGW\include。
4)、新建CPLUS_INCLUDE_PATH变量,值为D\MinGW\include\c++\3.4.5;D:\MinGW\include\c++\3.4.5;D:\MinGW\include\c++\3.4.5\backward;D:\MinGW\include。

4、python中配置mingw编译器。

在C:\Python27\Lib\distutils下新建或者修改distutils.cfg文件,内容如下:

[build]
compiler=mingw32

2.2、pip安装(pip install zbar),下面开始逐项排雷。

1、pip install zbar,果然出现c语言编译错误,没有找到zbar.h头文件(下图中蓝色字体部分)

C:\Users\zou>pip install zbar
Collecting zbar
  Downloading http://mirrors.aliyun.com/pypi/packages/33/54/cc5819efc9ee7e34b60b41e1d2d4753b6dd0c26a41c9a552611f66aa106e/zbar-0.10.tar.bz2
Installing collected packages: zbar
  Running setup.py install for zbar ... error
    Complete output from command c:\python27\python.exe -u -c "import setuptools, tokenize;__file__=‘c:\\users\\joshua~1\\appdata\\local\\temp\\pip-build-pnikpa\\zbar\\setup.py‘;f=getattr(tokenize, ‘open‘, open)(__file__);code=f.read().replace(‘\r\n‘, ‘\n‘);f.close();exec(compile(code, __file__, ‘exec‘))" install --record c:\users\joshua~1\appdata\local\temp\pip-2chu03-record\install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_ext
    building ‘zbar‘ extension
    creating build
    creating build\temp.win32-2.7
    creating build\temp.win32-2.7\Release
    c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Ic:\python27\include -Ic:\python27\PC -c zbarmodule.c -o build\temp.win32-2.7\Release\zbarmodule.o
    In file included from zbarmodule.c:24:
    zbarmodule.h:26:18: zbar.h: No such file or directory
    In file included from zbarmodule.c:24:
    zbarmodule.h:37: error: `ZBAR_ERR_NUM‘ undeclared here (not in a function)
    zbarmodule.h:67: error: syntax error before "zbar_image_t"
    zbarmodule.h:67: warning: no semicolon at end of struct or union
    zbarmodule.h:69: error: syntax error before ‘}‘ token
    zbarmodule.h:69: warning: type defaults to `int‘ in declaration of `zbarImage‘
    zbarmodule.h:69: warning: data definition has no type or storage class

2、找zbar.h

到zbar的github目录,https://github.com/ZBar/ZBar  ,下载zbar整体源码,解压后统一放到d:\src下,找到d:\src\include\zbar.h ,同时找到d:\src\python\setup.py(python下的setup文件)

3、修改setup.py文件,增加include_dirs行,指向include目录。

    ext_modules = [
        Extension(‘zbar‘, [
                ‘zbarmodule.c‘,
                ‘enum.c‘,
                ‘exception.c‘,
                ‘symbol.c‘,
                ‘symbolset.c‘,
                ‘symboliter.c‘,
                ‘image.c‘,
                ‘processor.c‘,
                ‘imagescanner.c‘,
                ‘decoder.c‘,
                ‘scanner.c‘,
                ],
            libraries = [ ‘zbar‘ ],
            include_dirs = [ ‘..\include‘ ],
        ),

4、再次执行安装。

D:\src\python>python setup.py install
running install
running build
running build_ext
building ‘zbar‘ extension
creating build
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c zbarmodule.c -o build\temp.win32-2.7\Release\zbarmodule.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c enum.c -o build\temp.win32-2.7\Release\enum.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c exception.c -o build\temp.win32-2.7\Release\exception.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c symbol.c -o build\temp.win32-2.7\Release\symbol.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c symbolset.c -o build\temp.win32-2.7\Release\symbolset.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c symboliter.c -o build\temp.win32-2.7\Release\symboliter.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c image.c -o build\temp.win32-2.7\Release\image.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c processor.c -o build\temp.win32-2.7\Release\processor.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c imagescanner.c -o build\temp.win32-2.7\Release\imagescanner.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c decoder.c -o build\temp.win32-2.7\Release\decoder.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c scanner.c -o build\temp.win32-2.7\Release\scanner.o
writing build\temp.win32-2.7\Release\zbar.def
creating build\lib.win32-2.7
c:\mingw\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.7\Release\zbarmodule.o build\temp.win32-2.7\Release\enum.o build\temp.win32-2.7\Release\exception.o build\temp.win32-2.7\Release\symbol.o build\temp.win32-2.7\Release\symbolset.o build\temp.win32-2.7\Release\symboliter.o build\temp.win32-2.7\Release\image.o build\temp.win32-2.7\Release\processor.o build\temp.win32-2.7\Release\imagescanner.o build\temp.win32-2.7\Release\decoder.o build\temp.win32-2.7\Release\scanner.o build\temp.win32-2.7\Release\zbar.def -Lc:\python27\libs -Lc:\python27\PCbuild -Lc:\python27\PC\VS9.0 -lzbar -lpython27 -lmsvcr90 -o build\lib.win32-2.7\zbar.pyd
c:\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -lzbar
collect2: ld returned 1 exit status
error: command ‘c:\\mingw\\bin\\gcc.exe‘ failed with exit status 1

继续报错,不能zbar的lib库。

5、进入https://github.com/ZBar/ZBar/tree/master/python 目录,查看python下的说明,发现如下文字:

To install this module type the following::

   python setup.py install

Dependencies
------------

This module requires the ZBar Bar Code Reader, which may be obtained
from:

* http://zbar.sourceforge.net/

Windows users please note: the module *will NOT load* unless the ZBar
library DLL (currently libzbar-0.dll) is available in your Windows system
PATH!

简单翻译一下:

a、python zbar安装方法:python setup.py install

b、python zbar需要zbar reader,zbar reader可以从http://zbar.sourceforge.net/网址下载到。

c、windows平台,需要zbar dll,最新版本名字为libzbar-0.dll 。

6、进入http://zbar.sourceforge.net/download.html,下载windows下的zbar reader执行程序。

Windows Installer

Note that the Windows port is in an unstable, testing phase. If you do try it out, please let us know how well it‘s working for you and open a support request if you encounter any problems.

The Windows Installation Guide has detailed instructions for installing and getting started with ZBar on Windows.

ZBar 0.10 Windows installer

The Windows installer now includes pre-built binaries of the dependencies (ImageMagick et al). Copyright, license, and source code details for these libraries may be found in the README included with the distribution.

Windows binaries for the Python module are available from PyPI

具体网址:https://jaist.dl.sourceforge.net/project/zbar/zbar/0.10/zbar-0.10-setup.exe ,下载后安装zbar  reader执行程序

7、安装zbar reader,默认路径 C:\Program Files (x86)\ZBar ,在bin目录下,果然找到libzbar-0.dll动态链接库文件。

8、拷贝libzbar-9.dll 到c:\python27\LIBS目录下

9、修改setup.py文件,指向zbar-0

    ext_modules = [
        Extension(‘zbar‘, [
                ‘zbarmodule.c‘,
                ‘enum.c‘,
                ‘exception.c‘,
                ‘symbol.c‘,
                ‘symbolset.c‘,
                ‘symboliter.c‘,
                ‘image.c‘,
                ‘processor.c‘,
                ‘imagescanner.c‘,
                ‘decoder.c‘,
                ‘scanner.c‘,
                ],
            libraries = [ ‘zbar-0‘ ],
            include_dirs = [ ‘..\include‘ ],
        ),

10、再次执行 python setup.py install

C:\src\python>python setup.py install
running install
running build
running build_ext
building ‘zbar‘ extension
creating build
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c zbarmodule.c -o build\temp.win32-2.7\Release\zbarmodule.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c enum.c -o build\temp.win32-2.7\Release\enum.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c exception.c -o build\temp.win32-2.7\Release\exception.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c symbol.c -o build\temp.win32-2.7\Release\symbol.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c symbolset.c -o build\temp.win32-2.7\Release\symbolset.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c symboliter.c -o build\temp.win32-2.7\Release\symboliter.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c image.c -o build\temp.win32-2.7\Release\image.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c processor.c -o build\temp.win32-2.7\Release\processor.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c imagescanner.c -o build\temp.win32-2.7\Release\imagescanner.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c decoder.c -o build\temp.win32-2.7\Release\decoder.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c scanner.c -o build\temp.win32-2.7\Release\scanner.o
writing build\temp.win32-2.7\Release\zbar.def
creating build\lib.win32-2.7
C:\mingw/bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.7\Release\zbarmodule.o build\temp.win32-2.7\Release\enum.o build\temp.win32-2.7\Release\exception.o build\temp.win32-2.7\Release\symbol.o build\temp.win32-2.7\Release\symbolset.o build\temp.win32-2.7\Release\symboliter.o build\temp.win32-2.7\Release\image.o build\temp.win32-2.7\Release\processor.o build\temp.win32-2.7\Release\imagescanner.o build\temp.win32-2.7\Release\decoder.o build\temp.win32-2.7\Release\scanner.o build\temp.win32-2.7\Release\zbar.def -LC:\Python27\libs -LC:\Python27\PCbuild -LC:\Python27\PC\VS9.0 -lzbar-0 -lpython27 -lmsvcr90 -o build\lib.win32-2.7\zbar.pyd
running install_lib
copying build\lib.win32-2.7\zbar.pyd -> C:\Python27\Lib\site-packages
running install_egg_info
Writing C:\Python27\Lib\site-packages\zbar-0.10-py2.7.egg-info

至此,编译并安装成功。

注意,上文中蓝色字体部分,Lib目录默认找了python27\libs目录,所以前文第8步拷贝到libs的奥秘正在于此。

三、总结

总结上述排雷的过程,无非是对c语言编译器的一点点基础,其次仔细查看错误,仔细查找说明文件。

时间: 2024-10-07 11:38:54

windows平台python 2.7环境编译安装zbar的相关文章

windows平台python 2.7环境编译安装zbarlight

类似于前一篇博文,http://www.cnblogs.com/zhongtang/p/7148082.html中描述的情况. 编译zbarlight同样出现问题,简要处理步骤如下: 1.到https://pypi.python.org/pypi/zbarlight下载源文件. File Type Py Version Uploaded on Size zbarlight-1.2.tar.gz (md5) Source   2017-03-09 5KB 2.解压到桌面目录,C:\Users\zo

OpenCV在Windows平台下的源码编译

OpenCV库官方网站为http://opencv.org/. 在该网站可以下载最新的OpenCV for Windows,例如当前我下载的是opencv-2.4.9.exe ,双击该文件解压到某个目录下,解压后的根目录为opencv,opencv目录下有2个子目录,分别为build和sources,build目录中存放的是已经编译好的库,而sources目录中存放的是源代码.下面我们会在sources目录中编译源代码. 在sources目录中可以看到有个CMakeLists.txt文件,这个文

LAMP环境编译安装(详细)

linux下Apache.mysql.php.phpMyadmin源码包编译安装及配置 事先可以先去各应用官网选择相应的源码包下载并上传到linux服务器上.源码包目录根据喜好或一个标准放置即可. 注:此文档仅适用于自己学习及测试使用,后续还将继续完善及解读文档中的不足. 在此之前先关闭selinux(Secrity-EnhancedLinux,安全增强式Linux),不然会由于selinux的安全机制影响到一些配置文件的加载及更改. 临时关闭(不用重启机器): setenforce 0 1.安

使用py2exe发布windows平台Python

一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序.py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序.py2exe是发布在开源许可证下的. 二.安装py2exe 从http://prdownloads.sourceforge.net/py2exe下载并运

Windows下Python,setuptools,pip,virtualenv的安装

#TITLE:Windows下Python,setuptools,pip,virtualenv的安装 #KEYWORDS: #DATE: Windows下Python,setuptools,pip,virtualenv的安装 Windows 2003平台,安装Python2.7.4,Python3.3,setuptools,pip,virtualenv. 安装Python2.7.4(当前版本是2.7.6),安装路径:C:\Python27 安装Python3.3.2,安装路径:C:\Python

windows下python web开发环境的搭建

windows下python web开发环境: python2.7,django1.5.1,eclipse4.3.2,pydev3.4.1 一. python环境安装 https://www.python.org/ftp/python/2.7/python-2.7.amd64.msi 不多说,装完后把C:\Python27加入到path环境变量里. 然后就溜溜python,看看version啦.OK,next step. 二. python web开发框架django安装 django是一个采用

python3的linux环境编译安装

python3的linux环境编译安装 1.linux下安装软件的方式 选则yum工具,方便,自行解决软件之间的依赖关系,自动下载且安装 1.配置yum源 可以选择阿里云源,清华源等 配置第一个仓库,里面有大量系统常用软件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 配置第二个仓库,携带大量第三方软件(nginx,redis,mongodb,mairadb等) wge

Linux lamp环境编译安装

1.安装准备: 1)httpd-2.0.52.tar.gz 2)mysql-4.1.12.tar.gz 3)libxml2-2.6.27.tar 4)freetype-2.1.10.tar 5)gd-2.0.33.tar 6)jpegsrc.v6b.tar 7)libpng-1.2.16.tar 8)zlib-1.2.3.tar 9)freetds-0.64.tar.gz 10)php-4.3.9.tar.gz 11)phpMyAdmin292.tar.gz 12)ZendOptimizer-3

Windows 64 位 Matlab R2013a 环境下安装 libsvm

在这种环境下, 安装 libsvm 可以说是傻瓜似的了, 但就我搜出的 libsvm 安装教程来看, 以前的 libsvm 安装起来是有点麻烦的 目前最新版本是 libsvm 3.18, 按照 [1] 的描述, 将 libsvm 的 windows 目录放到 matlab 目录中, 我想博主说的这个目录应该不是 matlab 的当前工作目录, 而是 matlab 的搜索目录. 因为当前工作目录只有一个, 你把它设为 windows, 那么 libsvm 目录下的 heart_scale 数据集就