Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ImportError: Unable to find zbar shared library on Flask

Tags:

python

zbar

Im trying to use pyzbar 0.1.4 on a Flask Server in Docker

The image was created by us, based in python 2.7 taken from alpine.

Install ZBar by

apk update
apk add zbar

Im getting the following error when running dockerfile File "/usr/lib/python2.7/site-packages/pyzbar/pyzbar.py", line 8, in <module> from .wrapper import ( File "/usr/lib/python2.7/site-packages/pyzbar/wrapper.py", line 166, in <module> c_uint_p, # minor File "/usr/lib/python2.7/site-packages/pyzbar/wrapper.py", line 159, in zbar_function return prototype((fname, load_libzbar())) File "/usr/lib/python2.7/site-packages/pyzbar/wrapper.py", line 135, in load_libzbar raise ImportError('Unable to find zbar shared library') ImportError: Unable to find zbar shared library

Im trying to decode a QR image using that library

Dockerfile

FROM buffetcontainerimages.azurecr.io/base/buffetcloud-python:0.1
RUN pip install --upgrade pip setuptools wheel
COPY wheeldir /opt/app/wheeldir
COPY *requirements.txt /opt/app/src/
RUN pip install --use-wheel --no-index --find-links=/opt/app/wheeldir \
-r /opt/app/src/requirements.txt
RUN pip install --use-wheel --no-index --find-links=/opt/app/wheeldir \
-r /opt/app/src/test-requirements.txt
COPY . /opt/app/src/
WORKDIR /opt/app/src
RUN python setup.py install
EXPOSE 5000
CMD dronedemo

And requirements.txt

requests>=2.18.4
flask>=0.12.2
mechanize>=0.3.6
regex>=2.4.136
PyPDF2>=1.26.0
bs4>=4.5.3
pyzbar>=0.1.4
openpyxl>=2.5.0
selenium>=3.9.0
matplotlib>=2.1.2

When pip install zbar ` pip install zbar Collecting zbar Downloading zbar-0.10.tar.bz2 ... zbarmodule.h:26:18: fatal error: zbar.h: No such file or directory

include

compilation terminated. error: command 'gcc' failed with exit status 1 `

like image 963
Nicolas Fuchs Avatar asked Feb 14 '18 17:02

Nicolas Fuchs


2 Answers

In Ubuntu install zbar-tools

sudo apt-get install zbar-tools
like image 98
Mise Avatar answered Oct 05 '22 12:10

Mise


A simple test, looks good.

FROM python:2.7
RUN apt-get update && \
    apt-get install -y build-essential libzbar-dev && \
    pip install zbar

i tried alpine.. but the zbar lib is only available in the edge branch -- trying to get it to work was more trouble than it was worth.

PS. beware of images that are not in the docker repo. -- didnt know it was your image


Working example:

$ docker build -t yourimagenamehere .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM python:2.7
 ---> 9e92c8430ba0
... trunc...
Successfully built d951cd32ea74
Successfully tagged yourimagenamehere:latest
$ docker run -it --rm yourimagenamehere 
Python 2.7.14 (default, Dec 12 2017, 16:55:09) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import zbar
>>> 
like image 32
Javier Buzzi Avatar answered Oct 05 '22 11:10

Javier Buzzi