release1.5

.\.venv\Scripts\Activate.ps1
python .\scripts\util\verify_environment.py

Transclude of verify_environment.py

Contesto

In un progetto complesso con molte dipendenze come FIRE, è fondamentale garantire che tutti gli sviluppatori lavorino in un ambiente di sviluppo coerente. Problemi come versioni di Python diverse, assenza di un ambiente virtuale o discrepanze nelle librerie installate possono portare a bug difficili da riprodurre e a una perdita significativa di tempo di sviluppo (“ma sul mio computer funziona!”).

Per mitigare questi rischi e migliorare l’esperienza di onboarding di nuovi sviluppatori, si è deciso di creare uno strumento automatico di “controllo sanitario”.

Decisione

È stato sviluppato uno script di utilità, verify_environment.py, che esegue una serie di controlli diagnostici sull’ambiente Python e fornisce un report chiaro e attuabile.

Lo script è progettato per essere il primo strumento da eseguire quando si configura un nuovo ambiente di sviluppo o quando si sospetta un problema legato alle dipendenze. Esegue le seguenti verifiche:

  1. Versione Python: Assicura che la versione dell’interprete soddisfi i requisiti minimi del progetto.
  2. Ambiente Virtuale: Controlla se un venv è attivo, promuovendo le best practice di isolamento.
  3. Dipendenze Mancanti o Errate: Confronta il requirements.txt con le librerie installate e segnala ogni discrepanza di versione o assenza.
  4. Dipendenze Extra (“Non Tracciate”): Ispeziona l’ambiente per trovare librerie installate che non sono definite nel requirements.txt, aiutando a mantenere l’ambiente pulito e a identificare potenziali conflitti.

L’output dello script è formattato con colori per una leggibilità immediata e, in caso di errore, fornisce il comando esatto per la risoluzione.

Conseguenze

Positive

  • Riduzione degli Errori “It Works on My Machine”: Garantisce una base di sviluppo uniforme per tutto il team, rendendo i bug più facili da riprodurre e risolvere.
  • Miglioramento della Developer Experience (DX): Fornisce uno strumento semplice e veloce per auto-diagnosticare problemi comuni, riducendo la frustrazione e i tempi di inattività.
  • Ambienti Puliti: Incentiva la manutenzione di ambienti di sviluppo puliti, segnalando pacchetti “orfani” che potrebbero causare conflitti futuri.
  • Onboarding Semplificato: Un nuovo sviluppatore può eseguire questo script come primo passo per verificare che la sua postazione di lavoro sia configurata correttamente.
  • Supporto all’Integrazione Continua (CI): Lo script può essere facilmente integrato in una pipeline di CI/CD come primo “gate” di controllo per assicurare che l’ambiente di build sia corretto prima di eseguire test o deployment.

Negative / Limitazioni

  • Dipendenza da setuptools: Lo script si basa su pkg_resources, che fa parte di setuptools. Se questa libreria (solitamente presente) dovesse mancare, lo script fallirebbe.
  • Encoding del File requirements.txt: Il codice attuale presuppone un encoding utf-16. Se il file requirements.txt fosse salvato con un altro encoding (es. utf-8), potrebbe fallire la lettura (un piccolo dettaglio da tenere a mente).
  • Non è un Gestore di Pacchetti: Lo script diagnostica i problemi ma non li risolve automaticamente. L’utente deve comunque eseguire il comando pip install suggerito.