| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /tmp/calpy/pyzbar/ |
Upload File : |
"""Loads zbar and its dependencies.
"""
import platform
import sys
from ctypes import cdll
from ctypes.util import find_library
from pathlib import Path
__all__ = ['load']
def _windows_fnames():
"""For convenience during development and to aid debugging, the DLL names
are specific to the bit depth of interpreter.
This logic has its own function to make testing easier
"""
# 'libzbar-64.dll' and 'libzbar-32.dll' each have a dependent DLL -
# 'libiconv.dll' and 'libiconv-2.dll' respectively.
if sys.maxsize > 2**32:
# 64-bit
fname = 'libzbar-64.dll'
dependencies = ['libiconv.dll']
else:
# 32-bit
fname = 'libzbar-32.dll'
dependencies = ['libiconv-2.dll']
return fname, dependencies
def load():
"""Loads the libzar shared library and its dependencies.
"""
if 'Windows' == platform.system():
# Possible scenarios here
# 1. Run from source, DLLs are in pyzbar directory
# cdll.LoadLibrary() imports DLLs in repo root directory
# 2. Wheel install into CPython installation
# cdll.LoadLibrary() imports DLLs in package directory
# 3. Wheel install into virtualenv
# cdll.LoadLibrary() imports DLLs in package directory
# 4. Frozen
# cdll.LoadLibrary() imports DLLs alongside executable
fname, dependencies = _windows_fnames()
def load_objects(directory):
# Load dependencies before loading libzbar dll
deps = [
cdll.LoadLibrary(str(directory.joinpath(dep)))
for dep in dependencies
]
libzbar = cdll.LoadLibrary(str(directory.joinpath(fname)))
return deps, libzbar
try:
dependencies, libzbar = load_objects(Path(''))
except OSError:
dependencies, libzbar = load_objects(Path(__file__).parent)
else:
# Assume a shared library on the path
path = find_library('zbar')
if not path:
raise ImportError('Unable to find zbar shared library')
libzbar = cdll.LoadLibrary(path)
dependencies = []
return libzbar, dependencies