Scripts d'installation, et requirements avec marqueurs de plateforme
requirements.txt installait mlx-whisper sans condition : l'installation aurait echoue sur Windows, ou ce paquet n'existe pas. Et pyobjc n'y figurait PAS DU TOUT alors que l'overlay macOS en depend — une installation neuve sur un autre Mac aurait produit une Zonza qui ne demarre pas. Les marqueurs retiennent 13 paquets sur Apple Silicon, 12 sur Mac Intel, 8 sur Windows. install.sh construit l'app et lance le diagnostic. install.ps1 pose le lancement au demarrage via pythonw (sans quoi une console resterait ouverte) et lance le diagnostic. Ce dernier porte un avertissement : il n'a jamais tourne sur Windows. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
96c1379621
commit
901d8f695a
66
install.ps1
Normal file
66
install.ps1
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# Installe Zonza sur Windows.
|
||||||
|
#
|
||||||
|
# powershell -ExecutionPolicy Bypass -File .\install.ps1
|
||||||
|
#
|
||||||
|
# Cree l'environnement, installe UNIQUEMENT ce qui sert a Windows (les marqueurs
|
||||||
|
# de requirements.txt ecartent MLX et pyobjc), pose le lancement au demarrage,
|
||||||
|
# puis lance le diagnostic.
|
||||||
|
#
|
||||||
|
# AVERTISSEMENT D'HONNETETE : ce script n'a JAMAIS ete execute sur une machine
|
||||||
|
# Windows. Il a ete ecrit depuis un Mac, d'apres la documentation. Le diagnostic
|
||||||
|
# de la derniere etape est justement la pour dire ce qui marche et ce qui casse.
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
Set-Location -Path $PSScriptRoot
|
||||||
|
|
||||||
|
Write-Host "-> Verification de Python..."
|
||||||
|
$py = Get-Command python -ErrorAction SilentlyContinue
|
||||||
|
if (-not $py) { throw "Python introuvable. Installe-le depuis python.org, en cochant 'Add python.exe to PATH'." }
|
||||||
|
$version = & python -c "import sys; print('.'.join(map(str, sys.version_info[:3])))"
|
||||||
|
Write-Host " Python $version"
|
||||||
|
& python -c "import sys; sys.exit(0 if sys.version_info >= (3, 11) else 1)"
|
||||||
|
if ($LASTEXITCODE -ne 0) { throw "Python 3.11 minimum requis, trouve $version." }
|
||||||
|
|
||||||
|
if (-not (Test-Path ".venv")) {
|
||||||
|
Write-Host "-> Creation de l'environnement..."
|
||||||
|
& python -m venv .venv
|
||||||
|
} else {
|
||||||
|
Write-Host "-> Environnement deja present, on le reutilise."
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "-> Installation des dependances de CETTE machine..."
|
||||||
|
& .\.venv\Scripts\python.exe -m pip install --quiet --upgrade pip
|
||||||
|
& .\.venv\Scripts\python.exe -m pip install --quiet -r requirements.txt
|
||||||
|
if ($LASTEXITCODE -ne 0) { throw "L'installation des dependances a echoue." }
|
||||||
|
|
||||||
|
Write-Host "-> Lancement au demarrage..."
|
||||||
|
# pythonw.exe : sans lui, une console noire resterait ouverte en permanence.
|
||||||
|
$demarrage = [Environment]::GetFolderPath("Startup")
|
||||||
|
$raccourci = Join-Path $demarrage "Zonza.lnk"
|
||||||
|
$shell = New-Object -ComObject WScript.Shell
|
||||||
|
$lien = $shell.CreateShortcut($raccourci)
|
||||||
|
$lien.TargetPath = (Resolve-Path ".\.venv\Scripts\pythonw.exe").Path
|
||||||
|
$lien.Arguments = '"' + (Resolve-Path ".\lanceur_qt.py").Path + '"'
|
||||||
|
$lien.WorkingDirectory = $PSScriptRoot
|
||||||
|
$lien.Description = "Zonza - dictee vocale locale"
|
||||||
|
$lien.Save()
|
||||||
|
Write-Host " $raccourci"
|
||||||
|
|
||||||
|
Write-Host "-> Diagnostic..."
|
||||||
|
& .\.venv\Scripts\python.exe app.py --diagnostic
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "Le diagnostic signale un probleme. Rien n'est casse : les lignes"
|
||||||
|
Write-Host "ci-dessus disent laquelle des epreuves a echoue."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "Installe."
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "Usage : Ctrl+Alt+D pour demarrer et arreter la dictee."
|
||||||
|
Write-Host "Journal : %LOCALAPPDATA%\Zonza\Zonza.log"
|
||||||
|
Write-Host "Lancer maintenant, sans redemarrer : .\.venv\Scripts\pythonw.exe lanceur_qt.py"
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "Si le raccourci ne repond pas, relance le diagnostic :"
|
||||||
|
Write-Host " .\.venv\Scripts\python.exe app.py --diagnostic"
|
||||||
66
install.sh
Executable file
66
install.sh
Executable file
@ -0,0 +1,66 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Installe Zonza sur macOS (et Linux, pour la partie portable).
|
||||||
|
#
|
||||||
|
# ./install.sh
|
||||||
|
#
|
||||||
|
# Cree l'environnement, installe UNIQUEMENT ce qui sert a cette machine (les
|
||||||
|
# marqueurs de requirements.txt s'en chargent), construit l'app macOS, puis lance
|
||||||
|
# le diagnostic. Il ne masque aucune erreur : si une etape echoue, il s'arrete.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
MINIMUM="3.11"
|
||||||
|
PY="${PYTHON:-python3}"
|
||||||
|
|
||||||
|
echo "→ Verification de Python…"
|
||||||
|
command -v "$PY" >/dev/null || { echo "✗ '$PY' introuvable. Installe Python $MINIMUM ou plus, ou renseigne PYTHON=/chemin/vers/python3." >&2; exit 1; }
|
||||||
|
"$PY" - <<PYCODE || { echo "✗ Python $MINIMUM minimum requis." >&2; exit 1; }
|
||||||
|
import sys
|
||||||
|
raise SystemExit(0 if sys.version_info >= tuple(int(n) for n in "$MINIMUM".split(".")) else 1)
|
||||||
|
PYCODE
|
||||||
|
echo " $("$PY" --version)"
|
||||||
|
|
||||||
|
if [[ ! -d .venv ]]; then
|
||||||
|
echo "→ Creation de l'environnement…"
|
||||||
|
"$PY" -m venv .venv
|
||||||
|
else
|
||||||
|
echo "→ Environnement deja present, on le reutilise."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "→ Installation des dependances de CETTE machine…"
|
||||||
|
.venv/bin/python -m pip install --quiet --upgrade pip
|
||||||
|
.venv/bin/python -m pip install --quiet -r requirements.txt
|
||||||
|
echo " $(.venv/bin/python -m pip list 2>/dev/null | wc -l | tr -d ' ') paquets installes"
|
||||||
|
|
||||||
|
if [[ "$(uname)" == "Darwin" ]]; then
|
||||||
|
echo "→ Construction de Zonza.app…"
|
||||||
|
./build_app.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "→ Diagnostic…"
|
||||||
|
.venv/bin/python app.py --diagnostic || {
|
||||||
|
echo
|
||||||
|
echo "✗ Le diagnostic signale un probleme. Rien n'est casse : lis les lignes"
|
||||||
|
echo " ci-dessus, elles disent laquelle des epreuves a echoue." >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
cat <<'FIN'
|
||||||
|
|
||||||
|
✓ Installe.
|
||||||
|
|
||||||
|
Il reste UNE chose que seul toi peux faire, et sans elle le raccourci ne
|
||||||
|
fonctionnera pas : accorder les autorisations macOS.
|
||||||
|
|
||||||
|
Reglages systeme > Confidentialite et securite
|
||||||
|
• Accessibilite → ajoute /Applications/Zonza.app, puis active
|
||||||
|
• Surveillance de l'entree → la meme chose
|
||||||
|
|
||||||
|
Puis quitte Zonza par son icone 🎙️ et relance-la : l'autorisation n'est lue
|
||||||
|
qu'au demarrage.
|
||||||
|
|
||||||
|
Usage : Cmd+Ctrl+D pour demarrer et arreter la dictee.
|
||||||
|
Journal : ~/Library/Logs/Zonza.log
|
||||||
|
FIN
|
||||||
@ -1,14 +1,32 @@
|
|||||||
# mlx-whisper : GPU Apple Silicon uniquement (moteur "mlx", machine actuelle).
|
# Zonza — dependances, avec marqueurs de plateforme.
|
||||||
mlx-whisper>=0.4.3
|
#
|
||||||
# faster-whisper : coeur CTranslate2, tourne partout (Mac Intel, Windows avec ou
|
# `pip install -r requirements.txt` n'installe QUE ce qui sert a la machine :
|
||||||
# sans GPU). Les deux coexistent car aucun des deux ne couvre a lui seul toutes
|
# MLX et pyobjc sont propres a macOS, PySide6 sert l'overlay Qt. Sans ces
|
||||||
# les plateformes visees par le portage — cf moteur/__init__.py::nom_moteur_pour.
|
# marqueurs, l'installation echouerait sur Windows (mlx-whisper n'y existe pas).
|
||||||
|
|
||||||
|
# --- transcription -------------------------------------------------------
|
||||||
|
# Deux moteurs, car aucun ne couvre a lui seul les plateformes visees
|
||||||
|
# (cf moteur/__init__.py::nom_moteur_pour).
|
||||||
|
mlx-whisper>=0.4.3; sys_platform == "darwin" and platform_machine == "arm64"
|
||||||
faster-whisper>=1.0
|
faster-whisper>=1.0
|
||||||
|
|
||||||
|
# --- interface -----------------------------------------------------------
|
||||||
|
# Cocoa sert l'overlay macOS. Ces paquets n'etaient PAS declares ici : une
|
||||||
|
# installation neuve sur un autre Mac aurait produit une Zonza qui ne demarre pas.
|
||||||
|
pyobjc-core>=12.2; sys_platform == "darwin"
|
||||||
|
pyobjc-framework-Cocoa>=12.2; sys_platform == "darwin"
|
||||||
|
pyobjc-framework-Quartz>=12.2; sys_platform == "darwin"
|
||||||
|
pyobjc-framework-ApplicationServices>=12.2; sys_platform == "darwin"
|
||||||
|
# Qt sert l'overlay partout ailleurs. Installe aussi sur macOS : la suite de
|
||||||
|
# tests y eprouve les DEUX interfaces, c'est ce qui protege le portage.
|
||||||
|
PySide6>=6.11
|
||||||
|
|
||||||
|
# --- capture, collage, calcul --------------------------------------------
|
||||||
sounddevice>=0.5.5
|
sounddevice>=0.5.5
|
||||||
numpy>=2.4
|
numpy>=2.4
|
||||||
pynput>=1.8.2
|
pynput>=1.8.2
|
||||||
pyperclip>=1.11
|
pyperclip>=1.11
|
||||||
pillow>=11
|
pillow>=11
|
||||||
|
|
||||||
|
# --- developpement -------------------------------------------------------
|
||||||
pytest>=8.0
|
pytest>=8.0
|
||||||
# PySide6 : uniquement hors macOS (Cocoa/pyobjc y sert deja l'overlay) — cf interface/qt.py.
|
|
||||||
PySide6>=6.11
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user