Trying to build OCRmyPDF under Cygwin, hit a brick wall
Marco Atzeri
marco.atzeri@gmail.com
Fri May 15 01:45:08 GMT 2020
Am 15.05.2020 um 00:50 schrieb Jim Garrison via Cygwin:
> The magic incantation necessary to get strdup turns out to be -
> D_GNU_SOURCE, as noted on StackOverflow.
>
> However, now I'm encountering a problem with Python's DLL handling
> code. When attempting to run OCRmyPDF I get
>
>
>
> $ ocrmypdf --help
> Traceback (most recent call last):
> File "/usr/bin/ocrmypdf", line 11, in <module>
> load_entry_point('ocrmypdf==9.8.0.post3+g5944044.d20200514',
> 'console_scripts', 'ocrmypdf')()
> File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py",
> line 489, in load_entry_point
> return get_distribution(dist).load_entry_point(group, name)
> File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py",
> line 2852, in load_entry_point
> return ep.load()
> File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py",
> line 2443, in load
> return self.resolve()
> File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py",
> line 2449, in resolve
> module = __import__(self.module_name, fromlist=['__name__'], level=0)
> File
> "/usr/lib/python3.7/site-packages/ocrmypdf-9.8.0.post3+g5944044.d20200514-py3.7.egg/ocrmypdf/__init__.py",
> line 18, in <module>
> from . import helpers, hocrtransform, leptonica, pdfa, pdfinfo
> File
> "/usr/lib/python3.7/site-packages/ocrmypdf-9.8.0.post3+g5944044.d20200514-py3.7.egg/ocrmypdf/leptonica.py",
> line 67, in <module>
> """
> ocrmypdf.exceptions.MissingDependencyError:
>
> ---------------------------------------------------------------------
> This error normally occurs when ocrmypdf can't find the Leptonica
> library, which is usually installed with Tesseract OCR. It could
> be that
> Tesseract is not installed properly, we can't find the installation
> on your system PATH environment variable.
>
> The library we are looking for is usually called:
> liblept-5.dll (Windows)
> liblept*.dylib (macOS)
> liblept*.so (Linux/BSD)
>
> Please review our installation procedures to find a solution:
> https://ocrmypdf.readthedocs.io/en/latest/installation.html
>
> ---------------------------------------------------------------------
>
>
> In the last file of the traceback (leptonica.py) there's this:
>
>
> from ctypes.util import find_library
> ...
> if os.name == 'nt':
> libname = 'liblept-5'
> os.environ['PATH'] = shim_paths_with_program_files()
> else:
> libname = 'lept'
>
>
> In Cygwin, that library is /usr/bin/cyglept-5.dll (why was the name
> changed?)
standard on Cygwin to differentiate from mingw build
https://cygwin.com/cygwin-ug-net/dll.html
>
> First I created a symlink from cyglept-5.dll to liblept-5.dll, with no
> effect. So I added a test for Cygwin at that point, resulting in this
> code:
>
>
> if os.name == 'nt':
> libname = 'liblept-5'
> os.environ['PATH'] = shim_paths_with_program_files()
> elif sys.platform == 'cygwin':
> libname = 'cyglept-5'
> else:
> libname = 'lept'
>
>
> This also had no effect, so I tried playing with find_library() in the
> interactive shell. In Cygwin, it doesn't seem to find any DLLs even
> though those DLLs are actually loadable. Viz:
>
>
> $ python3
> Python 3.7.7 (default, Apr 10 2020, 07:59:19)
> [GCC 9.3.0] on cygwin
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import os
>>>> import sys
>>>> from ctypes import *
>>>> from ctypes.util import find_library
>>>> find_library('cyglept-5') or 'Not found'
> 'Not found'
>>>> find_library('cyglept-5.dll') or 'Not Found'
> 'Not Found'
>>>> cdll.LoadLibrary('cyglept-5.dll') or 'Not Found'
> <CDLL 'cyglept-5.dll', handle 3f7970000 at 0x6fffffea76d0>
>
>
> So it appears to me that possibly find_library() is broken because
> it doesn't find the library, but yet Python can actually load the
> library.
>
> What am I missing?
>
where are you looking for ?
Have you installed libleptonica_5 and libleptonica-devel ?
$ cygcheck -cd |grep lept
leptonica 1.79.0-1
libleptonica-devel 1.79.0-1
libleptonica_5 1.79.0-1
More information about the Cygwin
mailing list