1diff --git a/src/ocrmypdf/_exec/ghostscript.py b/src/ocrmypdf/_exec/ghostscript.py 2index 5c357f1b..f459763a 100644 3--- a/src/ocrmypdf/_exec/ghostscript.py 4+++ b/src/ocrmypdf/_exec/ghostscript.py 5@@ -25,28 +25,7 @@ from ocrmypdf.subprocess import get_version, run, run_polling_stderr 6 7 log = logging.getLogger(__name__) 8 9-missing_gs_error = """ 10---------------------------------------------------------------------- 11-This error normally occurs when ocrmypdf find can't Ghostscript. 12-Please ensure Ghostscript is installed and its location is added to 13-the system PATH environment variable. 14- 15-For details see: 16- https://ocrmypdf.readthedocs.io/en/latest/installation.html 17---------------------------------------------------------------------- 18-""" 19- 20-_gswin = None 21-if os.name == 'nt': 22- _gswin = which('gswin64c') 23- if not _gswin: 24- _gswin = which('gswin32c') 25- if not _gswin: 26- raise MissingDependencyError(missing_gs_error) 27- _gswin = Path(_gswin).stem 28- 29-GS = _gswin if _gswin else 'gs' 30-del _gswin 31+GS = '@gs@' 32 33 34 def version(): 35diff --git a/src/ocrmypdf/_exec/jbig2enc.py b/src/ocrmypdf/_exec/jbig2enc.py 36index 2e8a058b..65a09088 100644 37--- a/src/ocrmypdf/_exec/jbig2enc.py 38+++ b/src/ocrmypdf/_exec/jbig2enc.py 39@@ -14,7 +14,7 @@ from ocrmypdf.subprocess import get_version, run 40 41 42 def version(): 43- return get_version('jbig2', regex=r'jbig2enc (\d+(\.\d+)*).*') 44+ return get_version('@jbig2@', regex=r'jbig2enc (\d+(\.\d+)*).*') 45 46 47 def available(): 48@@ -27,7 +27,7 @@ def available(): 49 50 def convert_group(*, cwd, infiles, out_prefix): 51 args = [ 52- 'jbig2', 53+ '@jbig2@', 54 '-b', 55 out_prefix, 56 '-s', # symbol mode (lossy) 57@@ -46,7 +46,7 @@ def convert_group_mp(args): 58 59 60 def convert_single(*, cwd, infile, outfile): 61- args = ['jbig2', '-p', infile] 62+ args = ['@jbig2@', '-p', infile] 63 with open(outfile, 'wb') as fstdout: 64 proc = run(args, cwd=cwd, stdout=fstdout, stderr=PIPE) 65 proc.check_returncode() 66diff --git a/src/ocrmypdf/_exec/pngquant.py b/src/ocrmypdf/_exec/pngquant.py 67index ca8a4542..d0544174 100644 68--- a/src/ocrmypdf/_exec/pngquant.py 69+++ b/src/ocrmypdf/_exec/pngquant.py 70@@ -19,7 +19,7 @@ from ocrmypdf.subprocess import get_version, run 71 72 73 def version(): 74- return get_version('pngquant', regex=r'(\d+(\.\d+)*).*') 75+ return get_version('@pngquant@', regex=r'(\d+(\.\d+)*).*') 76 77 78 def available(): 79@@ -46,7 +46,7 @@ def input_as_png(input_file: Path): 80 def quantize(input_file: Path, output_file: Path, quality_min: int, quality_max: int): 81 with input_as_png(input_file) as input_stream: 82 args = [ 83- 'pngquant', 84+ '@pngquant@', 85 '--force', 86 '--skip-if-larger', 87 '--quality', 88diff --git a/src/ocrmypdf/_exec/tesseract.py b/src/ocrmypdf/_exec/tesseract.py 89index 33ead41e..5840f7c1 100644 90--- a/src/ocrmypdf/_exec/tesseract.py 91+++ b/src/ocrmypdf/_exec/tesseract.py 92@@ -78,7 +78,7 @@ class TesseractVersion(StrictVersion): 93 94 95 def version(): 96- return get_version('tesseract', regex=r'tesseract\s(.+)') 97+ return get_version('@tesseract@', regex=r'tesseract\s(.+)') 98 99 100 def has_user_words(): 101@@ -100,7 +100,7 @@ def get_languages(): 102 msg += output 103 return msg 104 105- args_tess = ['tesseract', '--list-langs'] 106+ args_tess = ['@tesseract@', '--list-langs'] 107 try: 108 proc = run( 109 args_tess, 110@@ -122,7 +122,7 @@ def get_languages(): 111 112 113 def tess_base_args(langs: List[str], engine_mode: Optional[int]) -> List[str]: 114- args = ['tesseract'] 115+ args = ['@tesseract@'] 116 if langs: 117 args.extend(['-l', '+'.join(langs)]) 118 if engine_mode is not None: 119diff --git a/src/ocrmypdf/_exec/unpaper.py b/src/ocrmypdf/_exec/unpaper.py 120index 3c3ae72c..d269966a 100644 121--- a/src/ocrmypdf/_exec/unpaper.py 122+++ b/src/ocrmypdf/_exec/unpaper.py 123@@ -31,7 +31,7 @@ log = logging.getLogger(__name__) 124 125 126 def version() -> str: 127- return get_version('unpaper') 128+ return get_version('@unpaper@') 129 130 131 def _setup_unpaper_io(tmpdir: Path, input_file: Path) -> Tuple[Path, Path]: 132@@ -71,7 +71,7 @@ def _setup_unpaper_io(tmpdir: Path, input_file: Path) -> Tuple[Path, Path]: 133 def run( 134 input_file: Path, output_file: Path, *, dpi: DecFloat, mode_args: List[str] 135 ) -> None: 136- args_unpaper = ['unpaper', '-v', '--dpi', str(round(dpi, 6))] + mode_args 137+ args_unpaper = ['@unpaper@', '-v', '--dpi', str(round(dpi, 6))] + mode_args 138 139 with TemporaryDirectory() as tmpdir: 140 input_pnm, output_pnm = _setup_unpaper_io(Path(tmpdir), input_file) 141diff --git a/src/ocrmypdf/leptonica.py b/src/ocrmypdf/leptonica.py 142index e4814f1a..fdaf7ea4 100644 143--- a/src/ocrmypdf/leptonica.py 144+++ b/src/ocrmypdf/leptonica.py 145@@ -33,14 +33,7 @@ from ocrmypdf.lib._leptonica import ffi 146 147 logger = logging.getLogger(__name__) 148 149-if os.name == 'nt': 150- from ocrmypdf.subprocess._windows import shim_env_path 151- 152- libname = 'liblept-5' 153- os.environ['PATH'] = shim_env_path() 154-else: 155- libname = 'lept' 156-_libpath = find_library(libname) 157+_libpath = '@liblept@' 158 if not _libpath: 159 raise MissingDependencyError( 160 """