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:
- Versione Python: Assicura che la versione dell’interprete soddisfi i requisiti minimi del progetto.
- Ambiente Virtuale: Controlla se un
venvè attivo, promuovendo le best practice di isolamento. - Dipendenze Mancanti o Errate: Confronta il
requirements.txtcon le librerie installate e segnala ogni discrepanza di versione o assenza. - 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 supkg_resources, che fa parte disetuptools. Se questa libreria (solitamente presente) dovesse mancare, lo script fallirebbe. - Encoding del File
requirements.txt: Il codice attuale presuppone un encodingutf-16. Se il filerequirements.txtfosse 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 installsuggerito.