Strumenti utili per lo sviluppo in locale

Strumenti utili che possono aiutarti a sviluppare codice Python di Exercism sul tuo computer.


Note

Questa è una raccolta di strumenti popolari nella nostra community. Non vuole essere prescrittiva né esaustiva. Pensiamo che questi strumenti facciano bene il loro lavoro, ma ci sono sicuramente altri strumenti altrettanto validi. Se hai un editor, un IDE, uno strumento o un plugin da consigliare, ti invitiamo ad aggiungerlo a questo documento su GitHub.



Prima di iniziare a esplorare, assicurati di avere installata una versione recente di Python. La piattaforma web di Exercism attualmente supporta Python 3.10 - 3.13.5 (esercizi e test) e Python 3.13.5 (strumenti). Il nostro test runner online attualmente usa pytest 8.4.0 e pytest-subtests 0.14.2. Il nostro analyzer online usa pylint 4.0.4. Usare versioni diverse di Python, pytest o pylint in locale potrebbe darti risultati diversi da quelli del sito. Per maggiori informazioni, fai riferimento a Installare Python in locale.


Ambienti virtuali

Gli ambienti virtuali di Python offrono un isolamento leggero del runtime e dei pacchetti. Possono aiutarti a organizzare i progetti, tenendo raggruppati i pacchetti Python che installi dentro la directory di un ambiente specifico. Ambienti diversi possono contenere versioni diverse del runtime di Python insieme alle dipendenze di un progetto o di una libreria. Questo aiuta a evitare bug e incompatibilità causati dall'aggiornamento di una libreria per un progetto che «rompe» una dipendenza in un altro.

Oggi esistono molti strumenti di ambiente virtuale e simili agli ambienti virtuali, e un movimento crescente che preferisce usare i metadati di script inline, i dev container o docker al posto degli ambienti virtuali. È importante provare strategie diverse e trovarne una adatta al tuo stile di sviluppo e alle esigenze del progetto. Non dare per scontato che le strategie presentate qui vadano bene per tutti o che siano le tue uniche opzioni. Per una panoramica più generale degli strumenti non trattati qui, dai un'occhiata a questo articolo di Bas Nijholt e resta curioso.

Qui tratteremo tre importanti strumenti per gli ambienti virtuali: venv della libreria standard di Python, conda env di terze parti, che usa il gestore di pacchetti conda e (di solito) la distribuzione Anaconda di Python, e uv, il sostituto di pip + venv realizzato da terze parti. Tutti e tre sono abbastanza semplici da usare e/o installare.

Inoltre, PyEnv, Poetry e virtualenvwrapper sono strumenti che possono aiutarti a gestire più versioni di Python e più ambienti Python sulla stessa macchina.


Creare un ambiente virtuale con venv

Per creare un ambiente virtuale con venv, usa cd per spostarti nella directory in cui vuoi archiviare i tuoi ambienti. Dovrebbe essere una directory separata dal codice del tuo progetto, e che non inserirai nel controllo di versione. Poi esegui il comando venv con il nome della cartella in cui vuoi archiviare questo particolare ambiente. La convenzione comune è chiamare quella cartella <project-name-here>_venv:

Windows

PS C:\Users\foobar> py -m venv {name_of_virtualenv}

Per attivare l'ambiente virtuale, esegui il seguente comando:

PS> .\{name_of_virtual_env}\Scripts\activate.bat
(venv) PS> _

Linux/MacOS

$ python3 -m venv {name_of_virtualenv}
created virtual environment ... in 8568ms

Per attivare l'ambiente virtuale, esegui il seguente comando:

$ source {name_of_virtual_env}/bin/activate
(venv) $ _

Una volta attivato un venv, puoi eseguire i comandi pip per installare pacchetti «dentro» l'ambiente. I pacchetti installati saranno associati alla versione di Python del venv e si troveranno dentro {name_of_virtual_env}/Lib.

Disattivare un ambiente virtuale si fa chiamando lo script deactivate, che si trova nella stessa directory di activate.


Creare un ambiente virtuale con conda

La versione più recente di conda si può installare tramite miniconda. Questo cheatsheet di conda è molto utile, così come la documentazione di conda.

Creato originariamente come gestore di pacchetti Python per la popolare Anaconda distribution di «Python scientifico», conda è stato poi generalizzato ed esteso. Gli ambienti Conda sono simili ai venv, con la differenza principale che conda può creare ambienti virtuali e installare pacchetti per molti altri linguaggi di programmazione oltre a Python.

Tra i linguaggi supportati da Conda ci sono R, JavaScript, Ruby, Fortran, C/C++, Scala, Java e altri ancora. Per un confronto tra i comandi di conda e quelli di venv, consulta il riferimento dei comandi di conda.


MacOS/Linux

Per creare un ambiente conda, digita quanto segue, sostituendo {name of environment} con il nome che hai scelto e python={version} con la versione di Python che desideri. A questo punto puoi aggiungere eventuali altri pacchetti che vuoi installare nell'ambiente:

$ conda create --name {name of environment} python={version} "pytest>6.0" pylint
...

## Package Plan ##

  environment location: /usr/local/anaconda3/envs/test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h2ec42d9_0         364 KB  conda-forge
    dill-0.3.4                 |     pyhd8ed1ab_0          62 KB  conda-forge
    lazy-object-proxy-1.7.1    |  py310he24745e_0          32 KB  conda-forge
    ....
    additional packages here
    ....
    ------------------------------------------------------------
                                           Total:        21.8 MB

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Windows

Creare un ambiente conda su Windows richiede gli stessi comandi generali di Linux/MacOS. Tuttavia, è consigliabile usare il prompt cmd o powershell di Anaconda invece di aggiungere conda al tuo path:

(base) PS C:\Users\foobar> conda create --name {name_of_environment} python={version} "pytest>6" pylint
...

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\ProgramData\Anaconda3\envs\test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h5588dad_0         364 KB  conda-forge
    attrs-21.4.0               |     pyhd8ed1ab_0          49 KB  conda-forge
    bzip2-1.0.8                |       h8ffe710_4         149 KB  conda-forge
    ...
    additional packages here
    ...
    ------------------------------------------------------------
                                           Total:        37.5 MB

Proceed ([y]/n)? y
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

UV

Lavorare ai progetti con uv: uv

uv è uno strumento di gestione di pacchetti e progetti Python di Astral, scritto in Rust. È stato progettato per sostituire pip, venv, poetry e altri strumenti di gestione dei pacchetti e delle dipendenze di Python. A differenza di Conda o Mamba, uv è specializzato solo per Python. Tuttavia, uv supporta la compilazione di moduli di estensione Python scritti in altri linguaggi, come Fortran. Astral è anche lo sviluppatore del popolare linter Ruff e di TY, un controllo statico dei tipi per le annotazioni di tipo di Python, entrambi scritti in Rust.

Invece di entrare nei dettagli qui, la documentazione di UV è la tua fonte migliore per l'installazione e la configurazione.

Wrapper per ambienti virtuali

Documentazione e contesto: virtualenvwrapper.

Il pacchetto virtualenvwrapper funziona sopra venv per gestire tutti i tuoi ambienti virtuali in un unico posto. Puoi creare, copiare, eliminare e cambiare ambiente con comandi simili a quelli di Linux, come lsvirtualenv (per elencare gli ambienti) e mkvirtualenv (per creare un ambiente). Ti permette anche di aggiungere altri strumenti di gestione tramite estensioni. Puoi persino creare le tue estensioni per lo strumento seguendo questo tutorial.


PyEnv

pyenv è il fork per Python dei popolari strumenti rbenv/ruby-build, adattato a Python. In sostanza è un insieme di script e shim che permettono di impostare le versioni di Python sia a livello globale che per singolo utente. Cerca di rispettare la tradizione Unix dello strumento discreto, con un unico scopo, che fa bene una sola cosa.

pyenv e la documentazione di pyenv si trovano su GitHub.



Editor e IDE



Visual Studio Code

Visual Studio Code (VS Code) è un editor di codice gratuito creato da Microsoft. Include un ottimo supporto sia per gli ambienti virtuali e conda, sia per docker (tramite il plug-in docker), e può essere esteso con molti plugin diversi per il testing, il linting, la formattazione e lo sviluppo web.

Python per VS Code

ID dell'estensione: ms-python.python

Intestazione dell'estensione Python su VS Code

L'estensione Python di Microsoft è l'estensione Python ufficiale di Microsoft per VS Code, e un'installazione altamente consigliata. Offre un'ampia gamma di funzionalità, tra cui la gestione degli ambienti, la gestione dei test, il linting e il debug. Dalla versione più recente, installare l'estensione Python di Microsoft scarica anche pylance (un pacchetto popolare per il linting e la validazione del codice Python) e jupyter (per lavorare con i Jupyter Notebook).

  • Un tutorial di configurazione è disponibile qui e il riferimento delle impostazioni è molto utile.
  • Informazioni su come impostare le versioni di Python e lavorare con gli ambienti virtuali si trovano qui.
  • Informazioni su come configurare e usare unittest e pytest in VS Code si trovano qui.

PyCharm

PyCharm è un IDE (Integrated Development Environment, ambiente di sviluppo integrato) creato da JetBrains. È progettato appositamente per Python ed è popolare tra i professionisti . Come VS Code, può essere esteso con vari plugin, temi e formattatori gratuiti e a pagamento. La versione a pagamento supporta anche lo sviluppo con Django, lo sviluppo con Docker e l'integrazione con i database.

Pycharm e Pytest
  • I passaggi per configurare pytest con pycharm si trovano qui.
  • Pycharm usa unittest per impostazione predefinita, quindi devi avere pytest installato nell'ambiente che stai usando con pycharm (vedi i documenti su interprete e ambiente qui sopra) e poi indicare a pycharm di usarlo.
  • Eseguire i test direttamente dalla GUI è davvero facile, ma non dimenticare di dare una buona occhiata ai parametri di pytest sottostanti, così che sia configurato come preferisci.
  • La documentazione generale per eseguire i test e fare debug in pycharm si trova qui.
  • Altri strumenti e indicazioni per il debug si trovano qui.

Spyder IDE

Spyder è un IDE Python multipiattaforma, gratuito e open source, pensato per la comunità scientifica. Di solito è incluso nella distribuzione Anaconda di Python, ma può essere installato da solo e usato con qualsiasi versione di Python. Consigliamo un'installazione autonoma per garantire la massima flessibilità ed evitare conflitti tra pacchetti.

Spyder supporta pienamente gli ambienti venv e conda. Include un terminale interattivo IPython integrato, un debugger interattivo e un ricco supporto per grafici ed esplorazione dei dati direttamente nell'editor. Il completamento del codice e il linting aggiuntivi sono forniti tramite kite. Le integrazioni con i Jupyter Notebook e con gli strumenti di testing sono fornite tramite plugin sviluppati dalla community. Puoi anche scrivere plugin tuoi, usando l'API di Spyder.


Emacs

Emacs è un editor di testo gratuito, open source e altamente personalizzabile, scritto in Lisp. Un'ottima guida all'installazione e alla configurazione è disponibile su Real Python.

  • Anche l'Emacs Wiki ha una buona guida alla programmazione in Python con Emacs.
  • Anche Full Stack Python raccoglie alcune buone informazioni e link per iniziare con Emacs.

Vim

Vim è una versione gratuita e «migliorata» dell'editor di testo standard di Unix vi. È disponibile per una grande varietà di sistemi operativi e distribuzioni Linux/Unix. Un'ottima guida all'installazione e alla configurazione è disponibile su Real Python, e utili cheat sheet si trovano su vimsheet, glump e rtorr.

Anche se decidi che modificare codice Python in vim non fa per te, ti consigliamo di prendere familiarità con un insieme di comandi di base. vim o vi è spesso un editor di testo «di base» o «predefinito» nelle distribuzioni Linux e Unix, ed è l'editor predefinito per i messaggi di commit di git (tra le altre cose) su quei sistemi. È molto probabile che ti ritrovi su un sistema *nix a dover modificare un file di configurazione con solo vi disponibile, quindi sapere come uscire da vim è (quantomeno) una buona autodifesa.


Spacemacs

Spacemacs (repository GitHub) è una distribuzione gratuita di Emacs guidata dalla community, che combina le funzionalità di Emacs e Vim.

  • La documentazione ufficiale si trova qui
  • Questa guida su opensource offre una rapida panoramica delle opzioni di installazione e configurazione.
  • Il layer python di spacemacs aggiunge funzionalità per il testing, il linting, la gestione degli ambienti e la formattazione del codice.

Sublime text

Sublime text è un editor di testo a pagamento per la programmazione, realizzato da Sublime HQ Pty Ltd. È simile a VS Code e Atom, con molti pacchetti e plugin per la personalizzazione. Puoi anche sviluppare plugin tuoi per l'editor usando Python.