Zum Inhalt springen
LICENTIVO / INTEGRATION

Python-Softwarelizenzierung: Lizenzschlüssel prüfen

Ergänzen Sie eine Python-App um Lizenzprüfungen. Erstellen Sie eine virtuelle Umgebung, aktivieren Sie eine Lizenz und testen Sie Funktionszugriff und gespeicherte Zugangsdaten.

Python 3.10+ · Befehlszeile und DesktopAktualisiert

1. Bereiten Sie Python und eine lizenzierte Funktion vor

Ergänzen Sie eine kommerzielle Python-Kommandozeilen- oder Desktopanwendung um Kundenlizenzschlüssel und prüfen Sie die Berechtigung vor jeder geschützten Funktion. Diese Prüfungen steuern den Zugriff auf Ihre Anwendung; die Open-Source-Lizenz des Python-Interpreters bleibt davon unberührt. Ihre App stellt die Lizenzeingabe und den Callback für die eigentliche Aktion bereit.

Das Gerätekontingent zählt aktuelle Aktivierungen und wird bei Freigabe wieder verfügbar. Normale Lizenzen zählen auch offline; bei Floating-Lizenzen gibt auch ein abgelaufener Lease das Kontingent frei.

  1. Kopieren Sie die Produkt-ID unter Konsole > Produkte. Öffnen Sie die Signaturprüfschlüssel dieses Produkts und tragen Sie alle Schlüssel-ID/Public-Key-Paare im Initialisierungscode ein. Ersetzen Sie YOUR_PRODUCT_ID, YOUR_KEY_ID und YOUR_PUBLIC_KEY. Die Schnellintegration kann den Code erzeugen. Eine Produktkonfigurationsdatei ist nicht erforderlich; das SDK verwendet standardmäßig https://www.licentivo.com.
  2. Installieren Sie Python 3.10 oder höher und erstellen Sie ein Projektverzeichnis.
  3. Erstellen oder wählen Sie in der Licentivo Quick-Integration ein Produkt mit einer nicht gemessenen Exportfunktion aus, die gemäß seiner Richtlinie und Lizenz zulässig ist.

2. Installation in einer virtuellen Umgebung

Installieren Sie SDK 0.11.6 mit dem folgenden Befehl in Ihrem Anwendungsprojekt oder fügen Sie die Build-Abhängigkeit hinzu. Der Paketmanager lädt das SDK; ein Quellcode-ZIP, manuelles Entpacken oder ein lokaler Quellcodepfad ist nicht erforderlich.

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. Validieren Sie die Lizenz vor dem Exportieren

Initialisieren Sie das SDK beim Start oder bei der Aktivierung Ihrer Software. Lesen Sie den Kundenschlüssel aus Ihrem Aktivierungsdialog und übergeben Sie Produkt-ID und vertrauenswürdige Schlüssel. Halten Sie den Client bis zum Beenden offen. Platzieren Sie run_feature am tatsächlichen Geschäftsaufruf und ersetzen Sie den Export durch Ihre eigene Funktion.

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. Halten Sie den Client in einer Desktop-Anwendung am Leben

Bei einem Befehlszeilenexport kann der with-Block den gesamten Vorgang abdecken. Öffnen Sie bei einer Desktop-Anwendung den Client während der Aktivierung und behalten Sie ihn bei, bis das Fenster geschlossen wird. Erstellen und schließen Sie nicht für jeden Tastenklick einen Client.

Führen Sie Onlineaktivierung und andere Netzwerkoperationen außerhalb des GUI-Threads aus und übergeben Sie die Ergebnisse anschließend an den UI-Thread. Das Tkinter-Desktopbeispiel ist separat über den Dokumentationslink unten verfügbar; seine Quelldateien werden nicht mit dem pip-Paket installiert.

Jede Export-Schaltfläche, Verknüpfung oder jeder Befehl muss client.run_feature("export", lambda: export_report(path)) aufrufen. Beim Herunterfahren rufen Sie close auf; Es behält eine gerätegebundene Registrierung bei und versucht, einen schwebenden Sitz zurückzugeben.

Spätere Starts übergeben einen leeren Lizenzschlüssel mit demselben Produkt, demselben Benutzer und demselben Cache-Pfad, um die gespeicherten Geräteanmeldeinformationen wiederherzustellen. Der Offline-Start hängt immer noch von einer gültigen unterzeichneten Bewilligung und der Lizenzrichtlinie ab; Floating- und reine Online-Startvorgänge erfordern eine Serverbestätigung.

5. Überprüfen Sie die zulässigen und verweigerten Pfade

  1. Aktivieren Sie es mit Ihrem Testschlüssel und überprüfen Sie den resultierenden Bericht.
  2. Deaktivieren Sie LICENTIVO_LICENSE_KEY und starten Sie mit derselben virtuellen Umgebung und demselben Betriebssystembenutzer neu. Bestätigen Sie die Wiederherstellung der gespeicherten Geräteanmeldeinformationen.
  3. Legen Sie LICENTIVO_FEATURE auf eine in der Lizenz fehlende Funktion und LICENTIVO_OUTPUT auf einen neuen Dateinamen fest. Erwarten Sie einen Exit-Code ungleich Null und keinen neuen Export.
  4. Wenn Sie die Messung aktivieren, konfigurieren Sie zunächst die Nutzungsregel, legen Sie LICENTIVO_METERED=1 fest und geben Sie LICENTIVO_OPERATION_ID für die dauerhafte Geschäftsaufgabe an. Bei erfolgreicher Arbeit wird der Zähler einmal verringert.

Fehlerbehebung bei Installation und Autorisierung

Prüfen Sie Produkt-ID, alle Schlüssel-ID/Public-Key-Paare und den eingegebenen Lizenzschlüssel. Öffentliche Prüfschlüssel gehören zum Produkt; Kundenlizenzen und Geräteanmeldedaten sind getrennt. Verteilen Sie keine Testschlüssel oder Verwaltungs-API-Keys.

ModuleNotFoundError bedeutet normalerweise, dass Pip und die App unterschiedliche Python-Interpreter verwenden. Verwenden Sie für beide Befehle dieselbe ausführbare Datei für die virtuelle Umgebung.

Eine abgelaufene Lizenz oder eine verweigerte Funktion muss den Vorgang stoppen. Zeigen Sie den Fehler SDK und die Anforderungs-ID an, sofern verfügbar. Führen Sie den Export-Callback nach einer fehlgeschlagenen Prüfung nicht aus.

Für den gebührenpflichtigen Betrieb ist ein Netzwerkzugriff erforderlich. Behalten Sie eine stabile Aufgaben-ID und ein dauerhaftes Ergebnis bei, damit die ausstehende Bestätigung wiederhergestellt werden kann, ohne dass die Arbeit wiederholt werden muss. Verteilen Sie keine zwischengespeicherten Berechtigungen, Geräteanmeldeinformationen, Testschlüssel oder Anbieterverwaltungsschlüssel.