Python portabile: verificare l’ambiente e creare uno script multipiattaforma

by theArchitect
SHARE
Python portabile: verificare l’ambiente e creare uno script multipiattaforma
© Guida-HTML5.it

Introduzione

Installare Python non significa soltanto aggiungere un programma al computer: significa predisporre un ambiente nel quale gli script possano essere eseguiti in modo affidabile. Un problema comune, soprattutto per chi lavora su più sistemi operativi, è dare per scontato che Python sia sempre disponibile con lo stesso comando o nello stesso percorso.

Su Windows l’interprete può essere avviato con python oppure con py. Su macOS e Linux è frequente utilizzare python3. Anche il percorso dell’eseguibile cambia: un programma installato in una directory specifica su Windows si troverà in una posizione completamente diversa su Linux.

In questo tutorial realizzeremo uno script pratico che analizza l’ambiente Python in uso. Lo script mostrerà la versione dell’interprete, il percorso dell’eseguibile, il sistema operativo e la cartella di lavoro corrente. Useremo esclusivamente moduli inclusi nella libreria standard, quindi non sarà necessario installare pacchetti esterni.

Questo approccio è utile quando:

  • si sta verificando una nuova installazione di Python;
  • un progetto funziona sul computer di un collega ma non sul proprio;
  • si devono diagnosticare problemi legati a più installazioni di Python;
  • si vuole creare codice compatibile con Windows, macOS e Linux.

Codice completo

import os
import platform
import sys
from pathlib import Path


def mostra_informazioni_ambiente():
    """Stampa le principali informazioni sull´ambiente Python."""

    cartella_corrente = Path.cwd()
    percorso_python = Path(sys.executable)

    print("=== Diagnostica ambiente Python ===")
    print(f"Versione Python: {platform.python_version()}")
    print(f"Implementazione: {platform.python_implementation()}")
    print(f"Sistema operativo: {platform.system()}")
    print(f"Versione sistema: {platform.release()}")
    print(f"Architettura: {platform.machine()}")
    print(f"Eseguibile Python: {percorso_python}")
    print(f"Cartella corrente: {cartella_corrente}")
    print(f"Numero processori logici: {os.cpu_count()}")

    print("nControllo eseguibile:")
    if percorso_python.exists():
        print("OK: l´eseguibile Python esiste.")
    else:
        print("Attenzione: il percorso dell´eseguibile non è disponibile.")


if __name__ == "__main__":
    mostra_informazioni_ambiente()

Salva il codice in un file chiamato diagnostica_ambiente.py. Apri un terminale nella cartella che contiene il file e avvialo con il comando adatto al tuo sistema:

# Windows
py diagnostica_ambiente.py

# In alternativa, su Windows
python diagnostica_ambiente.py

# macOS e Linux
python3 diagnostica_ambiente.py

Spiegazione

Il modulo sys

Il modulo sys contiene informazioni e funzionalità collegate all’interprete Python. L’attributo sys.executable restituisce il percorso completo dell’eseguibile che sta eseguendo lo script.

Questa informazione è più affidabile del semplice comando digitato nel terminale. Per esempio, il comando python potrebbe riferirsi a una versione diversa da quella che ci aspettavamo. Controllando sys.executable possiamo sapere quale interprete è stato realmente utilizzato.

Il modulo platform

Il modulo platform permette di raccogliere informazioni sul sistema operativo e sull’interprete. platform.python_version() restituisce la versione di Python, mentre platform.system() indica il sistema operativo, ad esempio Windows, Linux o Darwin per macOS.

Non bisogna però usare questi valori per costruire manualmente percorsi di file. Per esempio, concatenare stringhe con slash o backslash può creare problemi tra sistemi diversi. Per i percorsi è preferibile utilizzare pathlib.

Il modulo pathlib

Path.cwd() restituisce la cartella di lavoro corrente. L’oggetto Path gestisce automaticamente i separatori corretti per il sistema operativo in uso e offre metodi leggibili come exists(), is_file() e is_dir().

Nel codice, la chiamata percorso_python.exists() controlla che il percorso dell’interprete esista davvero. Anche se questo controllo è semplice, è un esempio utile di diagnosi automatica.

Il blocco __name__

La condizione:

if __name__ == "__main__":
    mostra_informazioni_ambiente()

fa eseguire la funzione solo quando il file viene avviato direttamente. Se in futuro il file viene importato da un altro programma, la funzione sarà disponibile senza essere eseguita automaticamente. Questa è una buona abitudine fin dai primi script.

Best practice

  • Usa percorsi portabili: preferisci pathlib.Path alle concatenazioni manuali con stringhe.
  • Non presumere il comando Python: documenta se il progetto richiede py, python o python3.
  • Controlla l’interprete reale: sys.executable aiuta a individuare installazioni multiple.
  • Evita percorsi assoluti inseriti nel codice: un percorso come C:Progettiapp funzionerebbe soltanto su un computer specifico.
  • Raccogli informazioni utili nei problemi: versione Python, sistema operativo e percorso dell’interprete sono dati preziosi per il debug.
  • Organizza il codice in funzioni: anche uno script breve diventa più leggibile e facilmente riutilizzabile.

Quando installi Python, assicurati inoltre di scaricarlo da una fonte attendibile e di scegliere una versione supportata dal progetto. Su Windows, durante l’installazione, l’opzione relativa all’aggiunta di Python al PATH può rendere disponibile il comando dal terminale. Se il comando non viene riconosciuto, il launcher py può comunque aiutare a individuare l’installazione.

Riepilogo

Uno script Python portabile non deve conoscere in anticipo il sistema operativo o il percorso dell’interprete. I moduli sys, platform, os e pathlib permettono di ottenere queste informazioni in modo semplice e sicuro.

La diagnostica dell’ambiente è una competenza fondamentale: prima di cercare errori nel codice, bisogna sapere quale versione di Python viene eseguita, da quale posizione e su quale sistema. Applicare queste tecniche fin dall’installazione riduce molti problemi nei progetti reali.

Approfondisci con risorse ufficiali

  • Documentazione di sys: https://docs.python.org/3/library/sys.html
  • Documentazione di platform: https://docs.python.org/3/library/platform.html
  • Documentazione di pathlib: https://docs.python.org/3/library/pathlib.html
  • Documentazione ufficiale di Python: https://docs.python.org/3/

SHARE