> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Come creare il tuo file requirements.txt

> Guida completa al file requirements.txt in Python: impara come crearlo, elencare le dipendenze con pip freeze, fissare le versioni e preparare il tuo progetto per la produzione.

# 📋 File requirements.txt per Python

Il file `requirements.txt` è lo standard di settore per specificare e gestire le dipendenze nei progetti Python. Questa guida mostra come creare, configurare e usare `requirements.txt` per garantire coerenza tra gli ambienti di sviluppo e di produzione.

## Che cos'è un file requirements.txt?

Un file `requirements.txt` elenca tutti i pacchetti Python esterni di cui il tuo progetto ha bisogno, con le loro versioni specifiche. Questo permette:

* A te e al tuo team di mantenere ambienti identici
* Ai nuovi collaboratori di riprodurre esattamente l'ambiente
* Al deploy su Square Cloud di funzionare con le dipendenze corrette

***

<Steps>
  <Step title="Attiva l'ambiente virtuale">
    Lavorare all'interno di un ambiente virtuale è essenziale per mantenere le dipendenze del tuo progetto isolate dal sistema Python globale. Questo evita conflitti di versione e garantisce la riproducibilità.

    Attiva il tuo ambiente virtuale con uno dei comandi seguenti, a seconda del tuo sistema:

    **Windows:**

    ```bash theme={null}
    venv\Scripts\activate
    ```

    **macOS/Linux:**

    ```bash theme={null}
    source venv/bin/activate
    ```
  </Step>

  <Step title="Elenca le dipendenze del progetto">
    <Warning>
      Specifica sempre versioni esatte con `==` per garantire la riproducibilità e prevenire malfunzionamenti dovuti ad aggiornamenti incompatibili in produzione.
    </Warning>

    ### Opzione A: Creazione manuale (Consigliata)

    Crea un file `requirements.txt` nella radice del tuo progetto ed elenca tutti i pacchetti esterni con le loro versioni:

    ```plaintext requirements.txt theme={null}
    discord.py==2.3.0
    requests==2.31.0
    python-dotenv==1.0.0
    ```

    ### Opzione B: Generazione automatica con pip freeze

    Dopo aver installato le dipendenze nel tuo ambiente virtuale, puoi generare automaticamente il file. Ci sono due modi principali:

    **Opzione B1: Usa `pip freeze` (include tutto)**

    ```bash theme={null}
    pip freeze > requirements.txt
    ```

    <Warning>
      Attenzione: `pip freeze` include tutti i pacchetti installati globalmente, che possono includere pacchetti non necessari al tuo progetto. Rivedi il file dopo la generazione e rimuovi le dipendenze non strettamente necessarie.
    </Warning>

    **Opzione B2: Usa `pipdeptree` o `pip freeze` con filtro (Consigliata)**

    Per catturare SOLO le dipendenze del tuo progetto (senza i pacchetti ausiliari dell'ambiente), usa:

    ```bash theme={null}
    pip freeze --user > requirements.txt
    ```

    Oppure, per una soluzione più pulita, installa `pipdeptree`:

    ```bash theme={null}
    pip install pipdeptree
    pipdeptree -p your_project > requirements.txt
    ```

    Alternativa: Usa un controllo manuale dell'elenco o verifica quale pacchetto è stato installato specificamente per il tuo progetto:

    ```bash theme={null}
    pip list | grep -i "your-package"
    ```

    <Note>
      Se stai lavorando in un ambiente virtuale (consigliato), `pip freeze` funzionerà perfettamente poiché l'ambiente sarà isolato e conterrà solo le dipendenze del tuo progetto.
    </Note>
  </Step>

  <Step title="Rivedi e valida le dipendenze">
    Apri il file `requirements.txt` nel tuo editor di testo e:

    1. Rivedi l'elenco dei pacchetti
    2. Rimuovi le dipendenze non necessarie
    3. Aggiorna le versioni se necessario
    4. Assicurati di usare versioni esatte (con `==`)
  </Step>

  <Step title="Installa le dipendenze">
    Per installare tutte le dipendenze elencate:

    ```bash theme={null}
    pip install -r requirements.txt
    ```

    Questo comando garantisce che tutti i collaboratori e gli ambienti di produzione usino esattamente le stesse versioni.
  </Step>

  <Step title="Versiona e condividi">
    Con `requirements.txt` pronto, puoi:

    * Condividerlo con il tuo team
    * Metterlo sotto controllo di versione (git)
    * Assicurarti che tutti lavorino con le stesse versioni
    * Semplificare il deploy su Square Cloud

    Quando ospiti il tuo progetto su Square Cloud, il file `requirements.txt` viene rilevato automaticamente e tutte le dipendenze vengono installate durante la build.
  </Step>
</Steps>

***

## 💡 Buone pratiche e consigli:

* **Mantieni aggiornato**: Rivedi e aggiorna regolarmente `requirements.txt` man mano che aggiungi nuove dipendenze
* **Usa versioni esatte**: Usa sempre `==` invece di `>`, `>=` o nessuna versione per evitare sorprese in produzione
* **Rivedi pip freeze**: Se usi `pip freeze`, rivedi il file prima del commit, poiché potrebbe includere pacchetti ausiliari non necessari
* **Versionamento**: Effettua il commit di `requirements.txt` su git per tracciare le modifiche alle dipendenze
* **Ambiente isolato**: Mantieni un ambiente virtuale per progetto per evitare conflitti globali
* **Prova in locale**: Prima del deploy, testa il file con `pip install -r requirements.txt` in un nuovo ambiente

***

## 🚀 Prossimi passi

Con il tuo file `requirements.txt` configurato:

1. Effettua il commit sul tuo repository Git.
2. Ospita il tuo progetto su **Square Cloud**.
3. Configura il deploy automatico tramite GitHub.
4. Benvenuto nell'hosting professionale di applicazioni Python!

Un file `requirements.txt` ben strutturato è la base per qualsiasi applicazione Python di successo, garantendo che la tua applicazione funzioni perfettamente su Square Cloud.
