Python è al momento uno dei linguaggi di programmazione più popolari. È un linguaggio potente ma semplice che può essere utilizzato in quasi tutti gli ambienti di sviluppo.

Un sondaggio di Stack Overflow del 2021 rivela che Python è il linguaggio di programmazione con cui la maggior parte delle persone che si occupano di sviluppo preferisce lavorare.

Istogramma con i linguaggi di programmazione che suscitano più interesse in chi lavora nello sviluppo web, secondo un sondaggio realizzato su 82914 developer: Python è il linguaggio che desta più interesse con il 19,04%, Typescript segue con il 15,29% e, a chiudere la top 3, JS con il 14,59%.
Sondaggio di Stack Overflow.

Grazie a strumenti come Jupyter Notebook, Google Colaboratory e compilatori online, potete iniziare a usare questo linguaggio senza dovervi preoccupare di installare nulla.

Tuttavia, se volete andare oltre e godere della vera potenza di un linguaggio di uso generale come Python (soprattutto per creare applicazioni complesse), prima o poi dovrete imparare a usare la CLI, o interfaccia a riga di comando.

La maggior parte degli sviluppatori concorda sul fatto che una delle parti più intimidatorie dell’apprendimento di Python è la CLI. Ma con pochi comandi, la padroneggerete in men che non si dica.

In questo articolo vediamo i comandi più utili per lo sviluppo in Python.

Cos’È l’Interfaccia a Riga di Comando?

L’interfaccia a riga di comando, spesso abbreviata in CLI, è un programma basato sul testo utilizzato per eseguire programmi e svolgere attività relative al sistema operativo (OS), come la creazione e la gestione di file.

Le CLI accettano input dalla tastiera sotto forma di comandi e li passano a una shell o a un interprete di comandi. Queste shell interpretano i comandi impartiti dall’utente, li eseguono e restituiscono un risultato spesso indicato come output.

Una CLI può eseguire diverse shell. Questa schermata mostra due diverse CLI, una con la shell Python e l’altra con Bash:

Screenshot di un editor di codice con le shell Python e Bash aperte in due diverse CLI che mostrano l'output dei comandi print e neofetch.
Shell Python e Bash.

Questi due concetti vengono spesso confusi, quindi ecco la spiegazione:

  • La CLI è l’interfaccia testuale in cui si digitano i comandi e se ne ottiene l’output. Può eseguire diverse shell.
  • Una shell è un interprete di comandi in grado di interagire con il sistema operativo.

Che ci crediate o no, ogni programma che il vostro sistema sta eseguendo comporta un comando. Le finestre (GUI) con le quali interagite ogni giorno sono costituite da collegamenti che attivano comandi che vi permettono di interagire con il sistema operativo.

C’È Bisogno della CLI per Sviluppare con Python?

Per essere developer full-stack efficaci, dovete avere una solida conoscenza della riga di comando. Questo perché la maggior parte dei framework di backend richiede una qualche forma di interazione diretta con una CLI e se avete intenzione di distribuire un’applicazione in autonomia, la riga di comando sarà la vostra migliore amica.

Al giorno d’oggi è possibile eseguire Python da innumerevoli servizi online, oltre che da IDE che rendono molto più semplice l’esecuzione dei vostri programmi. Ma se vi occupate di sviluppo web, in particolare di backend, automazione di attività, blockchain, utilizzo di un computer remoto tramite SSH o gestione di strumenti Python-friendly come Docker, dovrete assolutamente usare la CLI.

Infatti, Python dispone di numerose librerie per la creazione di applicazioni CLI come Typer, Argsparse e Click. Potete passare da semplice utente della CLI a creare le vostre applicazioni CLI! Questo dimostra la forte connessione tra gli ambienti CLI e Python.

Una volta acquisita la padronanza della CLI, sarà molto più facile eseguire compiti di programmazione Python e vedrete un vantaggio nell’utilizzo di altri linguaggi di programmazione come PHP, C, C++ o Java.

Introduzione alla CLI

A seconda del sistema operativo che state usando, troverete delle differenze nell’utilizzo della riga di comando. Ogni sistema operativo ha un proprio modo di aprire e interagire con la CLI a causa delle diverse strutture organizzative dei file e delle shell di comando predefinite.

Vediamo i tre sistemi operativi più usati da chi sviluppa: Windows, Mac e Linux.

Windows

Windows è il sistema operativo desktop più diffuso, soprattutto grazie al suo prezzo e alla sua facilità d’uso. Se volete accedere alla CLI in Windows, dovete aprire il programma “Prompt dei comandi” o “Windows Powershell”.

Tenete presente che Windows usa \ per i percorsi invece di /. Dovete ricordarlo quando navigate tra le directory.

Sempre su Windows, avete l’alternativa di installare Git Bash, una riga di comando che emula il comportamento della shell Bash in Windows. In questo modo la maggior parte dei comandi Unix mostrati di seguito saranno compatibili con il vostro sistema.

Mac

Per quanto riguarda Mac, la riga di comando è accessibile da un’applicazione integrata chiamata “Terminale”. Potete cercarla con il Launchpad o trovarla nella cartella “Utilities” sotto “applicazioni”.

Linux

Su Linux avete a disposizione molte opzioni diverse a seconda della distro che usate, ma il comando “Ctrl + Alt + T” di solito attiva il terminale predefinito del vostro sistema.

Ora dovreste avere una finestra simile a quella mostrata qui sotto:

 Scherma di Manjaro Linux CLI che mostra lo stato di sistema
CLI.

I 20 (e Oltre) Comandi CLI Più Utili per lo Sviluppo in Python

Una volta aperta la vostra CLI, è il momento di immergervi nei principali comandi della shell che renderanno la vostra routine di sviluppo Python molto più semplice.

Comandi di Installazione

Probabilmente vi sarete imbattuti in un milione di modi per installare Python. Ma a volte è molto più comodo farlo con un semplice comando.

Ecco i diversi comandi che vi aiuteranno a installare Python su diversi sistemi operativi.

1. Chocolatey

Su Windows, per impostazione predefinita, non esiste un gestore di pacchetti. Un’opzione per ovviare a questo problema è Chocolatey, che vi fornisce programmi da installare direttamente dalla riga di comando, tra cui ovviamente Python.

Assicuratevi di installare Chocolatey prima di eseguire il seguente comando:

choco install python --pre 

2. Homebrew e Pyenv

macOS viene fornito con Python 2.7 installato di default. Tuttavia, Python 2.7 è ormai deprecato. L’intera comunità si è spostata su Python 3. Per gestire in modo efficiente le versioni di Python, potete usare un programma come pyenv.

Aprite una riga di comando e installate l’ultima versione di Homebrew (un gestore di pacchetti come Chocolatey) con il seguente comando:

/bin/bash -c "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Poi potete installare pyenv con questo semplice comando:

brew install pyenv

Potete installare una versione specifica di Python e impostarla come eseguibile globale di Python invece che di Python 2:

pyenv install 3.10 # Version you want
pyenv global 3.10.4 # Sets that version as default

Ora, se chiamate Python, sarà la versione che avete impostato con pyenv:

python
# Python 3.10.4 ....
# >>>

3. apt, pacman e dnf

Dato l’ampio utilizzo di Python per il software open source, un gran numero di distro Linux ha Python preinstallato. Se il vostro sistema non lo prevede, potete installare Python con un gestore di pacchetti.

Nelle distro basate su Debian (Ubuntu, Linux Mint, Kali Linux), userete apt, acronimo di “advanced package tool”:

sudo apt update
sudo apt install python3

Inoltre, se volete impostare Python 3 come interprete Python predefinito, potete usare il seguente comando:

sudo apt install python-is-python3

Nelle distro basate su Arch, potete usare il gestore di pacchetti ufficiale pacman:

sudo pacman -S python

In Fedora e nelle distribuzioni Linux basate su RPM (Red Hat, CentOS), potete usare dnf:

sudo dnf install python3

Comandi dell’Interprete

Passiamo rapidamente in rassegna i principali flag – opzioni della riga di comando – del comando Python e del suo gestore di pacchetti, pip.

4. python

Il comando python ha diversi flag, ossia opzioni che modificano il comportamento dell’esecuzione del codice.

Innanzitutto, per eseguire un file Python, basta chiamare l’interprete e aggiungere il nome del file, compresa l’estensione .py:

python helloworld.py

Se avete bisogno di ricordare a cosa serve un flag, potete usare il flag help in una qualsiasi di queste 3 presentazioni:

python -?
python -h
python --help

Per stampare (vedere) la versione di Python che state usando, usate il seguente comando:

python -V
python --version

Se volete eseguire il codice Python senza aprire e modificare un file .py, potete eseguirlo direttamente dal vostro terminale con il flag command:

# Hello, World!
python -c "print('Hello, World!')"

Il flag m esegue un modulo Python come uno script. Questo è molto utile quando volete creare un ambiente virtuale con il modulo integrato venv:

python -m venv .venv

5. pip

Il comando pip cerca i pacchetti nel Python Package Index (PyPI), risolve le dipendenze e installa la versione del pacchetto che avete indicato.

Per installare un pacchetto Python, dovete solo digitare pip e il nome del pacchetto che volete installare.

Il seguente comando installerà l’ultima versione del pacchetto:

pip install django

Se volete una versione specifica, eseguite il seguente comando:

# pip install package==version
pip install django==4.0.4

Quando lavorate a progetti collaborativi, dovete tenere traccia delle dipendenze, di solito con un file di requisiti. Con il flag r potete leggere e installare i pacchetti da un file di testo:

pip install -r requirements.txt

Un’altra funzione comunemente utilizzata è il flag freeze. Si usa per produrre un elenco delle versioni dei pacchetti installati nel vostro ambiente. Potete usarlo anche per visualizzare le vostre dipendenze in un file di requisiti:

pip freeze >> requirements.txt

Comandi di Autorizzazione

Python è molto bravo nello scripting e nella gestione dei file. Per lavorare con questi compiti, dovete avere una certa conoscenza di come funzionano i permessi nel vostro sistema operativo.

6. sudo, runas

Nei sistemi basati su Unix (macOS, Linux, BSD), dovete avere i permessi di superutente per eseguire alcune operazioni, come l’installazione di un programma, come abbiamo fatto sopra.

Il comando sudo vi permette di ottenere brevemente i permessi di admin per eseguire uno di questi comandi.

Di seguito è riportato un esempio di installazione globale di ueberzug (un pacchetto Python di anteprima delle immagini):

sudo pip install ueberzug

L’equivalente di Windows è Runas, che esegue uno script come utente diverso o come admin:

runas /noprofile /user:Administrator cmd

Esistono anche altri progetti come Gsudo, che rende il processo di elevazione dei permessi molto più semplice rispetto agli altri comandi integrati di Windows:

:: Installs gsudo
choco install gsudo

:: Reads a file named MySecretFile.txt
gsudo type MySecretFile.txt

7. chmod

chmod si usa per modificare i permessi di file e directory in Unix.

Un uso comune è quello di rendere eseguibile uno script Python:

# Makes mypythonscript.py executablechmod +x
mypythonscript.py

Dopo aver reso uno script eseguibile, potete eseguirlo direttamente utilizzando la notazione ./:

# Runs the script
./mypythonscript.py

Comandi di Navigazione

Navigare nel file system con un’interfaccia a riga di comando è un’attività quotidiana per chi sviluppa con Python. Ecco alcuni comandi essenziali utilizzati per navigare nel sistema quando si programma con Python.

8. ls, dir

Per elencare il contenuto di una directory (cartella), dovete usare il comando ls (Unix) o dir (Windows). Questo è probabilmente il primo comando che avete imparato quando avete iniziato a usare la CLI.

Ecco la sintassi utilizzata:

ls # Shows the contents of the working directory
ls mydirectory

Ed ecco un esempio del contenuto di una cartella in un file system locale:

ls test_python/
# classes_error.py radius.py test-Django

Questo comando ha molti flag utili. Infatti, viene spesso associato a ls -al per visualizzare i file nascosti (quelli con un punto all’inizio) e la modalità, la dimensione e la data di ogni file:

alias ls="ls -al"

# Results
total 20
drwx------ 3 daniel daniel 4096 ene 16 19:13 .
drwxr-xr-x 36 daniel daniel 4096 may 17 22:18 ..
-rw------- 1 daniel daniel  32 nov 17 2020 classes_error.py
-rw------- 1 daniel daniel 327 nov 10 2020 radius.py
drwx------ 4 daniel daniel 4096 ene 16 01:07 test-Django

Per quanto riguarda Windows, potete usare ls usando Git Bash, oppure potete usare il comando integrato dir :

dir

9. pwd

pwd sta per “print working directory” (stampa della directory di lavoro) e fa esattamente questo: vi fornisce il percorso completo della directory in cui vi trovate:

pwd
# /home/daniel/github/HTML-site/images

Se vi è capitato di perdervi nel vostro terminale, questo comando vi salverà la vita.

Potete ottenere lo stesso risultato in Windows usando il comando cd senza parametri (notate che lo stesso comando in Unix vi porterebbe alla home directory):

# Only on Windows
cd
# D:FoldersubFolder

10. cp

Copiare i file con un file manager grafico è intuitivo, ma poco efficiente. Con questo comando potete copiare qualsiasi tipo di file sul vostro sistema:

cp old_file.txt copy_old_file.txt

Per copiare tutto il contenuto di una directory, dovete usare cp -r:

cp -r originaldirectory/ newdir

L’equivalente di cp in Windows è copy:

copy old_file.txt copy_old_file.txt /a

11. cat, tipo

Per stampare il contenuto di un file di testo nel terminale senza aprire il file con un editor, potete usare i comandi cat, more, o less su Unix, e type su Windows:

cat old_file.txt # Unix
type old_file.txt # Windows

# Content
Hi there I hope you're enjoying the article ...
as much as I've enjoyed writing it!
End of the sample.

12. mv, move

Il comando mv sposta file e directory da una directory all’altra – in pratica un taglia e incolla – o rinomina un file se la destinazione non esiste:

# Rename files
mv source_file.txt renamed_file.txt
# File to another directory
mv renamed_file.txt newdir/

Potete anche usare la corrispondenza dei pattern per spostare i file. Per esempio, spostate tutti i file di .py in un’altra cartella:

mv *.py mypythondir/

Un comando equivalente su Windows è move che ha quasi la stessa funzionalità del precedente:

# Windows
move source_file.txt renamed_file.txt

13. rm, del

Potete usare il comando rm per rimuovere file e directory.

Per eliminare un file e non una directory, dovete usare il comando:

rm file_to_remove.txt

Se volete eliminare una directory vuota, potete usare il flag ricorsivo (-r):

rm -r dir_to_remove/

Per rimuovere una directory con contenuti al suo interno, dovete usare i flag force (-f) e recursive:

rm -rf dir_with_content/

In forma simile, trovate del su Windows. Siate ancora più cauti perché questo comando non ha i flag di prevenzione visti sopra:

del mywindowsdir

14. exit

Una volta terminata la programmazione Python, dovreste essere in grado di uscire dalla vostra sessione di shell. Nella maggior parte dei casi, questa operazione chiuderà anche il terminale che state usando:

exit

Questo comando funziona sia su Windows che su Unix.

Editor a Riga di Comando

Una volta che ci avrete preso la mano con la riga di comando, scroprirete che è più lento cambiare finestra o addirittura usare il mouse per modificare il codice.

Avere la possibilità di modificare il codice rimanendo nella riga di comando non è solo un ottimo modo per risparmiare tempo, ma vi farà anche sentire supereroi nel vostro team!

Ecco alcuni degli editor a riga di comando più usati.

15. Vim/Neovim

Vim e il suo discendente, Neovim, sono editor di testo basati su tastiera e utilizzati principalmente a riga di comando. Secondo un sondaggio di Stack Overflow del 2021, sono al quarto e al primo posto tra gli editor più amati da chi sviluppa.

Istogramma con i risultati di un sondaggio su 81838 persone sugli editor più amati: al primo posto c’è Neovim mentre Vim è in quarta posizione.
Gli editor di codice preferiti.

Vim è preinstallato su Linux e macOS. In effetti, è l’editor che incontrerete di più quando interagite con i server. Su Windows, dovrete installarlo usando il programma di installazione eseguibile dalla pagina di Vim.

Ora potete sfruttare le potenzialità di Vim semplicemente digitando il suo nome sulla riga di comando:

vim

In questo modo si attiverà un’interfaccia basata sul testo con diverse combinazioni di tasti per ogni azione di cui potreste aver bisogno durante la codifica in Python.

Vim ha una curva di apprendimento piuttosto ripida, ma una volta che lo avrete imparato non avrete voglia di passare ad altro.

Vi IMproved.
Vi IMproved.

16. Nano

Nano è un altro editor di testo a riga di comando che si usa soprattutto per modifiche rapide.

Supponiamo che abbiate introdotto un errore di sintassi nel vostro codice ma non volete aprire l’editor per correggerlo. Nano vi aiuta a correggerlo direttamente dalla vostra CLI:

nano

17. Emacs

Emacs è uno degli editor di testo più estensibili e personalizzabili che si possano trovare. Ha un’intera sezione dedicata alla programmazione Python dove troverai tonnellate di plugin per migliorare la vostra esperienza di sviluppo.

Emacs è disponibile in quasi tutti i sistemi operativi, quindi se non lo avete ancora installato, date un’occhiata alle istruzioni per il download.

Per aprire Emacs dalla riga di comando, usate il flag di sistema no window (-nw):

emacs -nw

Strumenti di Sviluppo

Lo sviluppo di Python non implica solo la codifica, ma anche la gestione di strumenti aggiuntivi come ambienti virtuali, sistemi di controllo di versione e strumenti di distribuzione.

Imparando i comandi che seguono otterrete un vantaggio nello sviluppo di qualsiasi tipo di applicazione con Python.

18. virtualenv/venv

Gli ambienti virtuali sono una tecnica fondamentale per lo sviluppo di Python. Grazie a essi, potete isolare i pacchetti utilizzati in diversi progetti in una cartella leggera, spesso chiamata .venv.

Con Python 3.3 o superiore, potete usare il modulo venv integrato per creare un ambiente virtuale:

# .venv being the name of the virtual environment
python -m venv .venv

virtualenv è un progetto esterno più veloce ed estensibile rispetto all’opzione integrata. Per creare un ambiente virtuale, installate prima il pacchetto virtualenv:

# Installs virtualenv
pip install --user virtualenv

# Creates a .venv virtual environment
virtualenv .venv

Successivamente, dovrai attivare l’ambiente virtuale. Su Windows, esegui uno dei seguenti comandi a seconda che tu usi cmd o PowerShell (consigliato):

:: PowerShell
.venvScriptsActivate.ps1
:: Cmd
.venvScriptsactivate.bat

Su Linux o MacOs:

source .venv/bin/activate

19. Git

Il controllo delle versioni è una delle pratiche più importanti nello sviluppo del software. Ci permette di tenere traccia di tutte le modifiche al codice, di collaborare con altri team di sviluppo e di avere un quadro chiaro del processo di sviluppo nel suo complesso.

Git è di gran lunga il sistema di controllo delle versioni più utilizzato. Potete installarlo dalla sua pagina di download.

Una volta installato, potete aprire un terminale e dare una prima occhiata a tutte le opzioni disponibili con questo comando:

git help

Per creare un repository, usate git init e digitate il nome del vostro repo:

git init name_repository
Initialized empty Git repository in /home/daniel/name_repository/.git/

Tenete presente che in questo modo verrà creato solo un repository Git locale. Se volete avere un repository remoto in cui memorizzare tutte le vostre modifiche online, dovete usare una piattaforma come GitHub o BitBucket.

Per clonare un repository remoto, dovrete utilizzare git clone e il sorgente del repo. Nell’esempio che segue, stiamo clonando un repo di GitHub tramite SSH:

git clone [email protected]:DaniDiazTech/HTML-site.git
...
Cloning into 'HTML-site'...
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 24 (delta 6), reused 21 (delta 4), pack-reused 0
Receiving objects: 100% (24/24), 4.98 MiB | 438.00 KiB/s, done.
Resolving deltas: 100% (6/6), done.

20. Docker

Docker rende più facile impacchettare e spedire le vostre applicazioni Python come container leggeri, portatili e autosufficienti. Aiuta sia nello sviluppo che nella distribuzione, permettendo a tutti i collaboratori di lavorare con le stesse impostazioni.

Per usare Docker, dovete seguire rigorosamente il processo di installazione indicato per il vostro sistema operativo nella pagina Get Docker.

Per elencare i comandi Docker disponibili, eseguite questo codice:

docker help 

Sarebbe difficile spiegare come eseguire Docker compose in questa breve sezione, quindi vi consigliamo di consultare la documentazione ufficiale.

21. Grep

Grep è un’utility a riga di comando essenziale usata per la corrispondenza dei pattern nei file di testo.

Un uso comune è quello di trovare quante volte una parola si ripete in un file:

grep -ic python pythondocument.txt
2

Nell’esempio precedente, otteniamo il numero di volte in cui Python (senza distinzione tra maiuscole e minuscole) è presente nel file pythondocument.txt.

L’equivalente di grep per Windows è findstr. Tuttavia, non si tratta dello stesso programma. Potete usare Git Bash per lanciare grep in Windows:

findstr /i /C python pythondocument.txt
2

22. HTTPie

HTTPie è un client HTTP a riga di comando che facilita l’interazione con i servizi web. Potete usarlo, per esempio, per testare le vostre API Python o per interagire con siti di terze parti.

Questo strumento CLI è disponibile in quasi tutti i gestori di pacchetti, come indicato nella documentazione ufficiale di HTTPie. Tuttavia, è disponibile anche come pacchetto Python, quindi potete installarlo con pip.

pip install httpie

Ecco come interrogare un’API remota, in questo caso l’API di GitHub:

http GET https://api.github.com/users/danidiaztech
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
...

23. ping

ping è un comando CLI disponibile di default su quasi tutti i sistemi operativi. Funziona inviando pacchetti di dati a un indirizzo IP e verificando quanto tempo impiega a trasmettere i dati e a ricevere una risposta, mostrando poi i risultati in millisecondi.

Questo comando si usa principalmente per verificare la connessione tra due macchine, ovvero la vostra macchina e la vostra applicazione Python su un server web:

ping kinsta.com
PING kinsta.com(2606:4700:4400::ac40:917d (2606:4700:4400::ac40:917d)) 56 data bytes
64 bytes from 2606:4700:4400::ac40:917d (2606:4700:4400::ac40:917d): icmp_seq=1 ttl=50 time=686 ms

Tabella di Riferimento dei Comandi

Qui di seguito potete trovare un riferimento rapido per tutti i comandi di cui abbiamo parlato:

Comando Uso
choco Installa pacchetti su Windows
brew Gestisce pacchetti macOS
apt, pacman, dnf Gestione di pacchetti su diverse distro Linux
python Lancia l’interprete Python
pip Gestione pacchetti Python
sudo, runas Programma Unix e Windows usato per scalare i permessi
chmod Cambia i permessi dei file
ls Elenca il contenuto di una directory
pwd Stampa la directory di lavoro
cp Copia file e directory
cat Stampa i contenuti dei file
mv, move Sposta (rinomina) file e directory
rm, del Elimina file e directory
exit Esce dalla sessione corrente della shell
vim, neovim Modifica efficiente del testo
nano Editor di testo per modifiche rapide
emacs L’editor più personalizzabile
virtualenv, venv Generatori di ambienti virtuali
git Sistema di controllo di versione
docker Containerizzare le applicazioni
grep Utilità di corrispondenza dei pattern
http Utilità di test dei servizi web
ping Verifica della connettività di rete
kill Termina i programmi

Riepilogo

Python è uno dei linguaggi di programmazione più facili da imparare. L’unico ostacolo è approcciarsi alla riga di comando senza aver compreso i comandi di cui avete bisogno.

In questo articolo avete scoperto la riga di comando e alcuni dei comandi più utilizzati per lo sviluppo di Python.

Quali altri comandi avete trovato utili nello sviluppo di Python? Condivideteli nei commenti qui sotto!

Daniel Diaz

Daniel is a self-taught Python Developer, Technical Writer, and long-life learner. He enjoys creating software from scratch and explaining this process through stunning articles. Follow him on Twitter: @DaniDiazTech