User Tools

Site Tools


snippets:python:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

snippets:python:start [2026-01-02 15:03] – created malte70snippets:python:start [2026-01-02 17:19] (current) – Snippet „zipapp“ hinzugefügt malte70
Line 44: Line 44:
 db.close() db.close()
 </code> </code>
 +
 +===== Skript inkl. Abhängigkeiten als ausführbare ZIP-Datei =====
 +
 +> **Achtung!** Dieses Snippet ist nur eine Roh-Fassung und muss noch überarbeitet werden!
 +
 +Mithilfe von Pythons [[https://docs.python.org/3/library/zipapp.html|zipapp-Modul]] lassen sich ausführbare ZIP-Archive erstellen, die ein Skript und alle seine Abhängigkeiten enthalten können.
 +
 +Die erzeugte Datei ist ein ZIP-Archiv mit Shebang, und kann so auf jedem System ausgeführt werden, solange Python installiert ist (Was unter Unix/Linux meist der Fall ist).
 +
 +Das folgende Skript erstellt eine zipapp für [[https://raw.githubusercontent.com/malte70/scripts/refs/heads/master/pushover-notify|pushover-notify]] (Teil meiner Skriptsammlung, sendet Benachrichtigungen über Pushover):
 +
 +<code bash>
 +# Python zipapp for pushover-notify
 +
 +cd "$(dirname $0)"
 +
 +wget "https://raw.githubusercontent.com/malte70/scripts/refs/heads/master/pushover-notify"
 +echo '# requirements.txt
 +# for standalone pushover-notify zipapp
 +
 +pushover @ git+https://github.com/Wyattjoh/pushover@5852545c5b9cf2717e1eafc4c8b134a08b0994da
 +toml==0.10.2
 +' > requirements_pushover_notify.txt
 +
 +
 +#
 +# Create pushover_notify package containing the script and
 +# all of it's dependencies
 +#
 +mkdir pushover_notify/
 +
 +# Empty __init__.py
 +touch pushover_notify/__init__.py
 +
 +# The script itself
 +cp pushover-notify pushover_notify/__main__.py
 +
 +# requirements.txt
 +# (used later to install dependencies into the pushover_notify package)
 +mv requirements_pushover_notify.txt pushover_notify/requirements.txt
 +
 +# Example config
 +echo '[pushover]
 +appname  = "MyApp"
 +api_key  = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 +user_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 +
 +# Optional: Alternative apps
 +[app.foo]
 +appname = "Foo"
 +api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 +' > pushover_notify/pushover-notify.toml
 +
 +
 +# Install external requirements
 +python -m pip install -r pushover_notify/requirements.txt --target pushover_notify/
 +
 +# Clean up after pip
 +rm -rf pushover_notify/{__pycache__,bin,*.dist-info}
 +
 +
 +#
 +# Create a .pyz file from the module pushover_notify
 +#
 +python -m zipapp \
 +        pushover_notify/ \
 +        -p "/usr/bin/env python3" \
 +        -o po-notify.pyz \
 +        -c
 +
 +</code>
 +
snippets/python/start.txt · Last modified: by malte70