Vai al contenuto
LICENTIVO / INTEGRATION

Licenze software Python: verifica delle chiavi

Aggiungi la verifica delle licenze a un'app Python. Crea un ambiente virtuale, attiva una licenza e prova permessi, credenziali salvate e accessi negati.

Python 3.10+ · riga di comando e desktopAggiornato

1. Preparare Python e una funzionalità concessa in licenza

Aggiungi chiavi di licenza per i clienti a un'applicazione commerciale Python da riga di comando o desktop e controlla i permessi prima di eseguire una funzione protetta. Questi controlli regolano l'accesso alla tua applicazione e non modificano la licenza open source dell'interprete Python. L'app fornisce l'interfaccia di attivazione e la callback dell'operazione.

La quota conta le attivazioni correnti e viene restituita al rilascio. Le licenze ordinarie contano anche offline; quelle flottanti restituiscono la quota anche alla scadenza del lease.

  1. Copia l’ID prodotto da Console > Prodotti. Apri le chiavi pubbliche di firma dello stesso prodotto e inserisci tutte le coppie ID chiave/chiave pubblica nel codice di inizializzazione, sostituendo YOUR_PRODUCT_ID, YOUR_KEY_ID e YOUR_PUBLIC_KEY. L’integrazione rapida può generare il codice. Non serve un file di configurazione; l’SDK usa https://www.licentivo.com per impostazione predefinita.
  2. Installa Python 3.10 o versione successiva e crea una directory di progetto.
  3. In Licentivo Integrazione rapida, crea o seleziona un prodotto con una funzionalità di esportazione illimitata consentita dalla sua politica e licenza.

2. Installare in un ambiente virtuale

Installa SDK 0.11.6 eseguendo il comando seguente nel tuo progetto o aggiungendo la dipendenza di compilazione. Il gestore di pacchetti scarica SDK; non servono archivi sorgente, estrazione manuale o percorsi locali.

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. Convalidare la licenza prima dell'esportazione

Inizializza l’SDK all’avvio o nel gestore di attivazione della tua applicazione. Leggi la chiave cliente dal modulo e passa ID prodotto e chiavi attendibili. Mantieni il client fino alla chiusura. Inserisci run_feature nell’operazione reale e sostituisci l’esportazione con la tua funzione.

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. Mantieni attivo il client in un'applicazione desktop

Per un'esportazione da riga di comando, il blocco with può coprire l'intera operazione. Per un'applicazione desktop, aprire il client durante l'attivazione e mantenerlo fino alla chiusura della finestra; non creare e chiudere un client per ogni clic sul pulsante.

Esegui l'attivazione online e le altre operazioni di rete fuori dal thread della GUI, quindi riporta i risultati al thread dell'interfaccia. L'esempio desktop Tkinter è disponibile separatamente tramite il link alla documentazione qui sotto; l'installazione del pacchetto pip non ne installa il sorgente.

Ogni pulsante, scorciatoia o comando di esportazione deve richiamare client.run_feature("export", lambda: export_report(path)). All'arresto chiama chiusura; mantiene una registrazione legata al dispositivo e tenta di restituire una postazione mobile.

Successivamente viene avviata la trasmissione di una chiave di licenza vuota con lo stesso prodotto, utente e percorso cache per ripristinare le credenziali del dispositivo salvate. L'avvio offline dipende ancora da una concessione firmata valida e dalla politica di licenza; L'avvio mobile e solo online richiede la conferma del server.

5. Verificare i percorsi consentiti e negati

  1. Attiva utilizzando la chiave di prova e controlla il rapporto risultante.
  2. Annulla l'impostazione LICENTIVO_LICENSE_KEY e riavvia con lo stesso ambiente virtuale e utente del sistema operativo. Conferma i ripristini delle credenziali del dispositivo salvate.
  3. Imposta LICENTIVO_FEATURE su una funzionalità assente dalla licenza e LICENTIVO_OUTPUT su un nuovo nome file. È previsto un codice di uscita diverso da zero e nessuna nuova esportazione.
  4. Se abiliti la misurazione, configura prima la regola di utilizzo, imposta LICENTIVO_METERED=1 e fornisci LICENTIVO_OPERATION_ID per l'attività aziendale durevole. Verificare che il lavoro riuscito diminuisca il suo contatore una volta.

Risolvere i problemi di installazione e autorizzazione

Controlla ID prodotto, tutte le coppie ID chiave/chiave pubblica e la licenza del cliente. Le chiavi pubbliche appartengono al prodotto; licenze e credenziali dei dispositivi sono separate. Non distribuire chiavi di test o API Key di gestione.

ModuleNotFoundError in genere significa che pip e l'app utilizzano interpreti Python diversi. Utilizzare lo stesso eseguibile dell'ambiente virtuale per entrambi i comandi.

Una licenza scaduta o una funzionalità negata devono interrompere l'operazione. Visualizza l'errore SDK e richiedi l'ID quando disponibile; non eseguire la callback dell'esportazione dopo un controllo non riuscito.

Le operazioni a consumo richiedono l'accesso alla rete. Mantieni un ID attività stabile e un risultato duraturo in modo che la conferma in sospeso possa essere ripristinata senza ripetere il lavoro. Non distribuire autorizzazioni memorizzate nella cache, credenziali del dispositivo, chiavi di test o chiavi di gestione del fornitore.