objectif
Créer une archive exécutable contenant main.py.
code minimal
import zipapp, tempfile, pathlib
with tempfile.TemporaryDirectory() as tmp:
d = pathlib.Path(tmp)/"app"; d.mkdir()
(d/"__main__.py").write_text("print('hi')\n", encoding="utf-8")
out = pathlib.Path(tmp)/"app.pyz"
zipapp.create_archive(d, target=out)
print(out.exists()) # attendu: True
utilisation
import zipapp, tempfile, pathlib, sys, subprocess
with tempfile.TemporaryDirectory() as tmp:
d = pathlib.Path(tmp)/"cli"; d.mkdir()
(d/"__main__.py").write_text("print('ok')\n", encoding="utf-8")
z = pathlib.Path(tmp)/"cli.pyz"
zipapp.create_archive(d, target=z, interpreter=sys.executable)
print(z.suffix == ".pyz")
variante(s) utile(s)
import zipapp
print(callable(zipapp.create_archive))
notes
- Ajoutez un shebang/interpreter pour rendre l’archive exécutable.
- Par défaut, la compression n’est pas activée (stock); ajustez si besoin.