• # PEP-723 et uv

    Posté par (site web personnel, Mastodon) . En réponse au message Livrer un environnement Python. Évalué à 2.

    Attention à pip freeze, ça ne fonctionne que pour l’interpréteur (la version de python) et la plateforme où tu te trouves. Ce n’est pas universel.

    Le plus simple pour des outils admin/ligne de commande, c’est d’utiliser la capacité d’uv d’être compatible avec PEP-723 (qui permet de décrire les dépendances dans le fichier directement)

    Exemple pour liste les 10 premières PEP avec un script python qui requiert des dépendances mais qui pour une raison ou une autre a besoin d’un python ≥3.11 (ce que sait installer uv)

    foo.py

    #!/usr/bin/env -S uv run -q
    # /// script
    # requires-python = ">=3.11"
    # dependencies = [
    # "requests<3",
    # "rich",
    # ]
    # ///
    import requests
    from rich.pretty import pprint
    resp = requests.get("https://peps.python.org/api/peps.json")
    data = resp.json()
    pprint([(k, v["title"]) for k, v in data.items()][:10])
    $ chmod +x foo.py
    $ ./foo.py

    Ta seule dépendance c’est d’avoir uv installé sur ta machine (binaire sans dépendance).

    P.S. Le script et les dépendances sont débiles, mais ça permet de donner un exemple.