Archivi categoria: Python Corner

Colima…e adesso GUI!

Colima, è un progetto open source che permette di eseguire container Docker e Kubernetes su macOS (e anche Linux) in modo leggero e con configurazione minima. Nasce come alternativa più semplice e meno pesante a Docker Desktop.

In pratica, cosa fa
Colima crea una piccola VM Linux locale (ma il sizing è editabile in fase di creazione) e sopra di essa puo’ avviare diversi runtime per container:

  • Docker
  • containerd + nerdctl
  • Kubernetes tramite k3s
  • Incus/LXD per container di sistema e VM

L’obiettivo è offrire un ambiente di sviluppo containerizzato compatibile con gli strumenti Docker standard (docker, docker compose, kubectl) senza richiedere software commerciali o interfacce pesanti.

Caratteristiche principali

  • Compatibilità Docker completa: puoi usare i normali comandi Docker senza modifiche
  • Kubernetes integrato: un cluster locale si avvia con un solo comando
  • Leggero e veloce: consuma meno risorse rispetto a Docker Desktop
  • Supporto Apple Silicon: ottimizzato per Mac M1/M2/M3/M4
  • Gestione risorse: CPU, RAM e disco configurabili
  • Profili multipli: ambienti separati per progetti diversi
  • Supporto AI/GPU: sui Mac Apple Silicon può eseguire workload AI accelerati via GPU

Come si usa

Installazione tipica (usando brew):
brew install colima
Avvio:
colima start

Da quel momento Docker funziona normalmente:
quindi testiamo con un: docker run hello-world

Perché lo uso e dovresti usarlo?

  • evita i costi/licenze di Docker Desktop
  • è più “trasparente” e molto Unix-like
  • è molto apprezzato dagli sviluppatori Mac che vogliono un ambiente Docker minimale e leggero

Architettura tecnica
Colima si basa principalmente su tre elementi principali:

  1. Lima per la gestione della VM Linux;
  2. QEMU, oppure il framework di virtualizzazione Apple (vz);
  3. runtime come Docker o containerd

Caso d’uso tipici
È lo strumento ideale per:

  • sviluppo locale con Docker
  • test di microservizi
  • ambienti Kubernetes locali
  • sviluppo cloud-native su Mac
  • workload AI locali su Apple Silicon

Usandolo quotidianamente mi sono reso conto che non aveva una GUI e volendo evitare crampi, nello scrivere comandi da CLI, ho creato una GUI minimale in Python che potete scaricare. (.zip file)

Al momento funiona solo su macosx e richiede Colima e Tkinter per Python. Ecco un screenshot di esempio.

colima-gui.png

Formattare le stringhe con f-string (Python 3.6+)

Questo è una novità rispetto al vecchio Python 3.6.x e, a mio parere, è il modo migliore per formattare una stringa. Non ci resta che scrivere una f prima della nostra stringa, e poi all’interno della stringa possiamo usare le parentesi graffe {} e le variabili di accesso.

Questo è molto più semplice e conciso rispetto alle vecchie regole di formattazione, ed è anche più veloce. Inoltre, possiamo scrivere espressioni nelle parentesi graffe che vengono valutate in fase di esecuzione.

Quindi qui per esempio vogliamo stampare il numero al quadrato della nostra variabile i, e possiamo semplicemente scrivere questa operazione nella nostra f-String.

Ecco i due esempi:

>>> nome = “Valerio”
>>> stringa = f”Ciao {nome}”
>>> print(stringa)
Ciao Valerio
>>> i = 10
>>> print(f”{i} quadrato è {i*i}”)
10 quadrato è 100

Installare moduli Python, su Windows, senza i diritti di amministratore

Capita spesso di (dover) lavorare su macchine Windows, su cui non si disporre dei diritti di amministratore e di dover installare moduli/dipendenze Python per poter proseguire il proprio lavoro; ma se proviamo ad avviare il buon pip il risultato che otteniamo è un messaggio poco amichevole:

Non vogliamo disturbare chi gestisce “la giostra” e quindi dobbiamo risolverla in maniera indolore e rapida

come vedete, nella figura sopra, dalla lista manca il modulo anaconda; a noi serve e dunque ci basterà installarlo con il comando:

  • python -m pip install anaconda

ed eccolo apparire magicamente:

happy py-coding!

 

Creare automaticamente il file requirements.txt

Spesso si scarica del codice sorgente Python da github, oppure da altre sorgenti simili, e non si conosce come installare velocemente tutte le dipendenze necessarie per la sua esecuzione se non è presente un file requirements.txt creato dallo sviluppatore. Di norma lo si deve creare manualmente.

La domanda dunque è:
Data la directory del codice sorgente Python, lo sviluppatore,  può creare automaticamente il file requirements.txt per indicare i moduli usati/presenti nella sezione import di uno script?

ebbene si, il comando seguente crea il file requirements.txt che successivamente potrà essere usato, da altri utenti, per installare i moduli necessari all’esecuzione del codice Python.

  • pip3 freeze > requirements.txt # in Python3
  • pip freeze > requirements.txt # in Python2

ecco il risultato:

Una volta creato il file basterà includerlo nel repository del codice, in maniera tale che gli utilizzatori dello script potranno importare/installare tutte le dipendenze necessarie per lavorare velocemente.