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.
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:
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:
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.
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.
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!
Lascia un commento