Aller au contenu
LICENTIVO / INTEGRATION

Licences logicielles Python : valider les clés

Ajoutez la validation des licences à une application Python. Créez un environnement virtuel, activez une licence et testez droits, identifiants enregistrés et refus d'accès.

Python 3.10+ · ligne de commande et bureauMis à jour

1. Préparez Python et une fonctionnalité sous licence

Ajoutez des clés de licence client à une application commerciale Python, en ligne de commande ou de bureau, et vérifiez les droits avant chaque fonction protégée. Ces contrôles régissent l'accès à votre application sans modifier la licence open source de l'interpréteur Python. L'application fournit la saisie de la clé et le callback de l'opération.

Le quota compte les activations actuelles et est rendu à leur libération. Les licences ordinaires restent comptées hors ligne ; les licences flottantes rendent aussi le quota à l’expiration du bail.

  1. Copiez l’ID du produit dans Console > Produits. Ouvrez les clés publiques de signature du même produit et collez toutes les paires ID de clé/clé publique dans le code d’initialisation, en remplaçant YOUR_PRODUCT_ID, YOUR_KEY_ID et YOUR_PUBLIC_KEY. L’intégration rapide peut générer ce code. Aucun fichier de configuration n’est nécessaire ; le SDK utilise https://www.licentivo.com par défaut.
  2. Installez Python 3.10 ou version ultérieure et créez un répertoire de projet.
  3. Dans l'intégration Licentivo Quick, créez ou sélectionnez un produit avec une fonctionnalité d'exportation illimitée autorisée par sa politique et sa licence.

2. Installer dans un environnement virtuel

Installez le SDK 0.11.6 avec la commande suivante dans votre projet ou ajoutez la dépendance de compilation. Le gestionnaire de paquets récupère le SDK ; aucun ZIP source, aucune extraction manuelle ni aucun chemin local ne sont nécessaires.

Windows · PowerShell
python -m venv .venv
./.venv/Scripts/python.exe -m pip install "licentivo-sdk==0.11.6"
Linux / macOS · Bash
python3 -m venv .venv
./.venv/bin/python -m pip install "licentivo-sdk==0.11.6"

3. Validez la licence avant d'exporter

Initialisez le SDK au démarrage ou lors de l’activation de votre logiciel. Lisez la clé client dans votre formulaire et transmettez l’ID produit et les clés approuvées. Gardez le client jusqu’à la fermeture. Placez run_feature au point d’entrée métier réel et remplacez l’export par votre fonction.

Python · complete app.py
"""A protected operation to move into your own application's business handler."""
import os
import sys
from pathlib import Path
from licentivo import Client


# BEGIN LICENTIVO PRODUCT
# Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
PRODUCT_ID = 'YOUR_PRODUCT_ID'
TRUSTED_KEYS = {'YOUR_KEY_ID': 'YOUR_PUBLIC_KEY'}
# END LICENTIVO PRODUCT

def export_report(path):
    # Replace this write with your existing, non-metered export operation.
    Path(path).write_text('A report generated by the licensed application.\n', encoding='utf-8')


def main():
    # In a GUI, read the activation input; later starts pass an empty key.
    with Client.open_product(
        PRODUCT_ID, TRUSTED_KEYS,
        os.getenv('LICENTIVO_LICENSE_KEY', ''),
        on_error=lambda error: print(f'Background verification: {error}', file=sys.stderr),
    ) as client:
        feature = os.getenv('LICENTIVO_FEATURE', 'export')
        path = os.getenv('LICENTIVO_OUTPUT', 'licensed-report.txt')
        action = lambda: export_report(path)
        if os.getenv('LICENTIVO_METERED') == '1':
            client.run_metered_feature(feature, 1, os.getenv('LICENTIVO_OPERATION_ID', ''), action)
        else:
            client.run_feature(feature, action)
        print(f'License OK: {feature} is available\nExport completed: {path}')
    # Keep this context open until your real app exits. No Deactivate on normal exit.


if __name__ == '__main__':
    try:
        main()
    except Exception as error:
        print(str(error), file=sys.stderr)
        sys.exit(2)
Windows · PowerShell
$env:LICENTIVO_LICENSE_KEY = 'YOUR_TEST_LICENSE_KEY'
./.venv/Scripts/python.exe app.py
# On later starts, restore the saved device credential:
Remove-Item Env:LICENTIVO_LICENSE_KEY
./.venv/Scripts/python.exe app.py
Linux / macOS · Bash
export LICENTIVO_LICENSE_KEY='YOUR_TEST_LICENSE_KEY'
./.venv/bin/python app.py
# On later starts, restore the saved device credential:
unset LICENTIVO_LICENSE_KEY
./.venv/bin/python app.py

4. Gardez le client en vie dans une application de bureau

Pour une exportation en ligne de commande, le bloc with peut couvrir l’intégralité de l’opération. Pour une application de bureau, ouvrez le client lors de l'activation et conservez-le jusqu'à la fermeture de la fenêtre ; ne créez pas et ne fermez pas un client pour chaque clic sur un bouton.

Exécutez l'activation en ligne et les autres opérations réseau en dehors du thread graphique, puis transmettez les résultats au thread de l'interface. L'exemple de bureau Tkinter est proposé séparément via le lien vers la documentation ci-dessous ; l'installation du paquet pip n'installe pas son code source.

Chaque bouton, raccourci ou commande d'exportation doit appeler client.run_feature("export", lambda: export_report(path)). À l'arrêt, appelez la fermeture ; il conserve un enregistrement lié à l'appareil et tente de restituer un siège flottant.

Les démarrages ultérieurs transmettent une clé de licence vide avec le même chemin de produit, d'utilisateur et de cache pour restaurer les informations d'identification de l'appareil enregistrées. Le démarrage hors ligne dépend toujours d'une subvention signée valide et de la politique de licence ; Les démarrages flottants et en ligne uniquement nécessitent une confirmation du serveur.

5. Vérifiez les chemins autorisés et refusés

  1. Activez à l’aide de votre clé de test et inspectez le rapport résultant.
  2. Désactivez LICENTIVO_LICENSE_KEY et redémarrez avec le même environnement virtuel et le même utilisateur du système d'exploitation. Confirmez les restaurations d'informations d'identification de l'appareil enregistrées.
  3. Définissez LICENTIVO_FEATURE sur une fonctionnalité absente de la licence et LICENTIVO_OUTPUT sur un nouveau nom de fichier. Attendez-vous à un code de sortie différent de zéro et à aucune nouvelle exportation.
  4. Si vous activez la mesure, configurez d'abord la règle d'utilisation, définissez LICENTIVO_METERED=1 et fournissez LICENTIVO_OPERATION_ID pour la tâche métier durable. Vérifiez que le travail réussi décrémente son compteur une fois.

Dépanner l'installation et l'autorisation

Vérifiez l’ID produit, toutes les paires ID de clé/clé publique et la licence du client. Les clés publiques appartiennent au produit ; licences et identifiants des appareils sont distincts. Ne distribuez pas de clés de test ou de clés API de gestion.

ModuleNotFoundError signifie généralement que pip et l'application utilisent différents interpréteurs Python. Utilisez le même environnement virtuel exécutable pour les deux commandes.

Une licence expirée ou une fonctionnalité refusée doit arrêter l'opération. Affichez l'erreur SDK et l'ID de demande lorsqu'ils sont disponibles ; n'exécutez pas le rappel d'exportation après un échec de vérification.

Les opérations mesurées nécessitent un accès au réseau. Conservez un ID de tâche stable et un résultat durable afin que la confirmation en attente puisse être récupérée sans répéter le travail. Ne distribuez pas les autorisations mises en cache, les informations d'identification de l'appareil, les clés de test ou les clés de gestion des fournisseurs.