feat(cli): charger les moteurs optionnels depuis les modeles embarques

This commit is contained in:
2026-06-17 19:52:29 +02:00
parent 9b40fc0a85
commit ea1752d4a7
5 changed files with 120 additions and 9 deletions

View File

@@ -1,6 +1,8 @@
import os
from pathlib import Path
from PyInstaller.utils.hooks import collect_all, copy_metadata
# Spec CLI frozen — EXE de PRODUCTION (anonymisation fichier unique sans GUI).
# Même moteur / mêmes datas que anonymisation_onefile.spec, mais :
# - entrypoint = scripts/anonymize_cli.py (CLI production, pas launcher.py)
@@ -22,6 +24,7 @@ def _data_entry(relative_path: str, target_dir: str | None = None):
return (str(src), target_dir or relative_path)
binaries = []
datas = []
for relative_path, target_dir in [
("config", "config"),
@@ -95,9 +98,41 @@ hiddenimports = [
]
def _collect_optional_package(package_name: str):
try:
package_datas, package_binaries, package_hiddenimports = collect_all(package_name)
datas.extend(package_datas)
binaries.extend(package_binaries)
hiddenimports.extend(package_hiddenimports)
try:
datas.extend(copy_metadata(package_name, recursive=True))
except Exception:
pass
except Exception:
pass
for _package_name in [
"edsnlp",
"spacy",
"thinc",
"blis",
"srsly",
"catalogue",
"confection",
"cymem",
"preshed",
"murmurhash",
"gliner",
"loguru",
]:
_collect_optional_package(_package_name)
a = Analysis(
[str(project_dir / "scripts" / "anonymize_cli.py")],
pathex=[str(project_dir)],
binaries=binaries,
datas=datas,
hiddenimports=hiddenimports,
cipher=block_cipher,