1 19/10/2026 10 min

Installare Django su Windows 11 o 10 senza inciampare nei dettagli che fanno perdere tempo

Su Windows l’installazione di Django è semplice solo quando il sistema è già in ordine: Python presente, pip funzionante, virtual environment separato e un terminale che punta all’interprete giusto. Il punto non è “far partire Django”, ma evitare il classico scenario in cui tutto sembra installato e poi django-admin non si trova, il server di sviluppo non ascolta sulla porta prevista o il progetto usa il Python sbagliato. La strada più pulita è partire da Python ufficiale, creare un ambiente virtuale per ogni progetto e installare Django dentro quell’ambiente.

La procedura sotto vale per Windows 11 e Windows 10, con PowerShell o Prompt dei comandi. Se usi un pannello o un IDE, la logica non cambia: quello che conta è che l’interprete sia coerente e che il progetto non dipenda da installazioni globali sparse nel sistema.

1. Verifica preliminare di Python e pip

Prima di installare Django, verifica di avere Python 3.11 o superiore, oppure una versione compatibile con la release di Django che vuoi usare. In produzione o in ambienti di lavoro seri non si improvvisa: si controlla la versione, si controlla il percorso dell’eseguibile e si conferma che pip sia disponibile.

Apri PowerShell e lancia questi comandi:

python --version
py --version
pip --version

Esito atteso: uno dei due comandi relativi a Python restituisce una versione 3.x, e pip mostra un percorso coerente con quell’installazione. Se invece ricevi un errore tipo “Python was not found” o il Microsoft Store si apre al posto dell’interprete, il problema non è Django: è il mapping di Python sul sistema.

Se Python non c’è, installalo dal sito ufficiale python.org/downloads. Durante l’installazione su Windows spunta Add python.exe to PATH. È il dettaglio che evita metà dei problemi successivi.

2. Installazione di Python su Windows con le opzioni giuste

Scarica l’installer per Windows dalla pagina ufficiale e avvialo. Nella prima schermata attiva almeno queste opzioni:

  • Add python.exe to PATH
  • Install launcher for all users, se disponibile
  • Customize installation solo se ti serve controllare directory e componenti

Se vuoi evitare installazioni “creative”, lascia il percorso predefinito. Per un uso normale basta. Dopo l’installazione, chiudi e riapri il terminale: Windows non aggiorna sempre subito il PATH della sessione già aperta.

Controlla di nuovo:

python --version
py -0p

py -0p mostra gli interpreti registrati e i relativi percorsi. È un controllo molto utile quando sul PC ci sono più versioni di Python e vuoi capire quale stai davvero usando.

3. Creazione del progetto e ambiente virtuale

Non installare Django globalmente se puoi evitarlo. Su Windows, come su Linux, la soluzione più pulita è un ambiente virtuale per progetto. In pratica isoli dipendenze e versioni, così non rompi altri lavori quando aggiorni un pacchetto.

Crea una cartella di lavoro, poi genera il virtual environment:

mkdir C:	emplogdjango
cd C:	emplogdjango
py -m venv .venv

Attiva l’ambiente con uno dei due comandi seguenti, a seconda del terminale usato:

.venvin
otre.txt

Questa riga non è corretta per Windows, quindi va usato il comando giusto sotto. Se usi PowerShell:

.\.venv\Scripts\Activate.ps1

Se usi Prompt dei comandi:

.venv\Scripts\activate.bat

Quando l’ambiente è attivo, il prompt cambia e mostra (.venv). Se non succede, il problema è quasi sempre l’esecuzione degli script in PowerShell o il comando sbagliato per la shell in uso.

Se PowerShell blocca l’attivazione con un errore di policy, puoi verificare lo stato corrente con:

Get-ExecutionPolicy -List

Per una modifica temporanea e reversibile nella sola sessione corrente:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

È una misura limitata alla sessione, quindi il blast radius è basso. Non serve toccare la policy globale se devi solo proseguire con l’installazione.

4. Installazione di Django dentro il virtual environment

Con l’ambiente attivo, aggiorna gli strumenti base e installa Django:

python -m pip install --upgrade pip setuptools wheel
pip install django

Qui il controllo importante è semplice: pip deve puntare alla cartella della tua .venv, non a un’installazione globale. Verificalo con:

where python
where pip

Le prime righe dovrebbero riferirsi a qualcosa come C:\temp\blogdjango\.venv\Scripts\python.exe e C:\temp\blogdjango\.venv\Scripts\pip.exe. Se vedi percorsi di AppData\Local\Programs\Python o simili, l’attivazione non è andata a buon fine oppure stai usando il terminale sbagliato.

Controlla anche la versione installata di Django:

python -m django --version

Se il comando restituisce una versione, l’installazione è corretta. Se invece ricevi un errore di modulo non trovato, hai installato Django fuori dall’ambiente o stai invocando un altro interprete.

5. Creazione del progetto Django

Una volta installato Django, crea il progetto con django-admin oppure con il modulo Python. Il secondo approccio è più robusto perché usa esplicitamente l’interprete corrente:

python -m django startproject mysite .

Il punto finale indica che il progetto viene creato nella directory corrente. Se preferisci una struttura più ordinata, puoi ometterlo e lasciare che Django crei una sottocartella dedicata:

python -m django startproject mysite

Dopo la creazione, dovresti avere una struttura simile a questa:

blogdjango/
├─ .venv/
├─ manage.py
└─ mysite/ ├─ __init__.py ├─ asgi.py ├─ settings.py ├─ urls.py └─ wsgi.py

Se non compare manage.py, hai probabilmente lanciato il comando nella directory sbagliata. Se compare ma il progetto non parte, il problema di solito è nella shell o nell’attivazione della venv, non in Django.

6. Avvio del server di sviluppo e test locale

Il test più rapido è avviare il server di sviluppo locale:

python manage.py runserver

Atteso: il terminale mostra un messaggio tipo “Starting development server at http://127.0.0.1:8000/”. Apri il browser e verifica che la pagina di benvenuto Django sia raggiungibile. Se vuoi esporlo sulla rete locale per test da un altro dispositivo, usa:

python manage.py runserver 0.0.0.0:8000

In quel caso controlla il firewall di Windows. La porta 8000 potrebbe essere bloccata se il profilo di rete è restrittivo. Il controllo minimo è l’accesso da http://localhost:8000/ sul PC stesso. Se funziona in locale ma non da un altro host, il problema è quasi sempre il firewall o il binding dell’indirizzo, non Django.

Se la porta 8000 è già occupata, Django te lo segnala. Puoi cambiare porta senza toccare altro:

python manage.py runserver 127.0.0.1:8080

7. Applicazioni, migrazioni e database

Un progetto Django utile quasi mai resta fermo al sito vuoto. La prossima cosa da fare è creare una app e predisporre il database. Il database di default, SQLite, va bene per prove locali e sviluppo leggero. Per un lavoro più serio, prima o poi passerai a PostgreSQL o a un altro database relazionale più adatto al carico.

Crea una app di esempio:

python manage.py startapp core

Nel file mysite/settings.py aggiungi la app a INSTALLED_APPS. Un esempio minimale:

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'core',
]

Poi applica le migrazioni iniziali:

python manage.py migrate

Se il comando fallisce, controlla prima il file di configurazione del database in settings.py. Su SQLite il percorso predefinito di solito non richiede modifiche. Se invece hai già configurato PostgreSQL o MySQL, il problema può essere nelle credenziali, nel driver Python o nella raggiungibilità del servizio.

8. Creare un superuser per l’area admin

L’admin di Django è uno dei motivi per cui il framework resta molto usato: ti dà una console di gestione pronta. Per accedervi serve un superuser:

python manage.py createsuperuser

Il comando chiede username, email e password. Evita password deboli anche in locale se il progetto verrà poi spostato in staging o condiviso con altri. Dopo la creazione, accedi a http://127.0.0.1:8000/admin/.

Se la pagina admin mostra errore 500, controlla il terminale dove gira runserver: Django scrive lì lo stack trace. In questa fase il log più utile è proprio la console, non un file sparso nel sistema.

9. Dipendenze aggiuntive e file requirements.txt

Quando il progetto cresce, conviene fissare le dipendenze in un file requirements.txt. È la base minima per riprodurre l’ambiente su un altro PC Windows o in CI:

pip freeze > requirements.txt

Per installare tutto su una nuova macchina, basta ricreare la venv e lanciare:

pip install -r requirements.txt

Questo approccio evita il tipico drift tra laptop diversi: un progetto funziona sul tuo PC ma fallisce altrove perché una dipendenza è stata aggiornata in modo silenzioso. Su Windows il problema è ancora più comune quando si mischiano installazioni globali, ambienti virtuali e IDE che selezionano un interprete diverso da quello atteso.

10. Problemi tipici su Windows e come leggerli correttamente

Ci sono quattro errori ricorrenti. Il primo è “python is not recognized”: in genere PATH mancante o alias del Microsoft Store. Il secondo è “No module named django”: stai usando l’interprete sbagliato oppure Django non è installato nella venv attiva. Il terzo è “This site can’t be reached”: server non avviato, porta errata o firewall. Il quarto è il blocco dell’attivazione in PowerShell per Execution Policy troppo restrittiva.

La diagnosi corretta parte sempre da questi controlli, nell’ordine:

  1. Verifica quale Python stai usando con where python o py -0p.
  2. Controlla che la venv sia attiva e che il prompt la mostri.
  3. Conferma Django con python -m django --version.
  4. Avvia python manage.py runserver e osserva l’output del terminale.
  5. Solo dopo, tocca firewall, porte o configurazione di rete.

Questo ordine riduce il tempo perso in modifiche inutili. È un errore comune cercare subito il colpevole in Django quando il problema è a monte: PATH, shell o interprete selezionato da VS Code.

11. Uso con VS Code e selezione dell’interprete

Se lavori con Visual Studio Code, apri la cartella del progetto e seleziona l’interprete della venv tramite il comando Python: Select Interpreter. L’interprete corretto deve puntare a .venv\Scripts\python.exe. Se l’editor usa un altro Python, i comandi e il debug daranno risultati incoerenti rispetto al terminale.

Il controllo pratico è duplice: il terminale integrato deve mostrare la venv attiva e il debugger deve lanciare lo stesso interprete. Se non coincidono, hai un problema di ambiente, non di applicazione.

12. Pulizia e manutenzione dell’ambiente

Quando il progetto finisce o vuoi rifare l’ambiente da zero, basta cancellare la cartella .venv e ricrearla. È una procedura reversibile e pulita, molto meglio che disinstallare Python dal sistema per cercare di “riparare” un progetto. Se hai bisogno di cambiare versione di Python, installa la nuova release, crea una nuova venv e reinstalla i pacchetti da requirements.txt.

Se vuoi verificare rapidamente che il progetto resti sano nel tempo, usa almeno questi controlli ogni volta che aggiorni dipendenze o cambi macchina:

  • python --version
  • python -m django --version
  • python manage.py check
  • python manage.py migrate

Il comando check è utile perché intercetta problemi di configurazione senza avviare il server. È un test leggero ma concreto, e in pratica ti dice subito se hai introdotto errori evidenti in settings, URL o app registrate.

13. Sequenza consigliata, in sintesi operativa

Se vuoi la sequenza minima e corretta, è questa:

  1. Installa Python da python.org e abilita il PATH.
  2. Verifica python --version e pip --version.
  3. Crea una cartella progetto e una venv con py -m venv .venv.
  4. Attiva la venv con il comando adatto alla shell.
  5. Aggiorna pip e installa Django con pip install django.
  6. Crea il progetto con python -m django startproject mysite ..
  7. Avvia python manage.py runserver e verifica l’accesso nel browser.
  8. Solo dopo aggiungi app, migrazioni, admin e dipendenze extra.

Questa scaletta è volutamente conservativa: riduce gli errori di ambiente e ti porta in pochi minuti a una installazione Django pulita, replicabile e facile da diagnosticare. Su Windows il vero vantaggio non è tanto l’installazione in sé, ma il fatto di sapere sempre quale Python stai usando e dove sono finite le dipendenze.