# Compilazione dai Sorgenti

Se vuoi apportare modifiche al codice, puoi compilare dai sorgenti.

Installa [`hatch`](https://hatch.pypa.io) per gestire le dipendenze del progetto ed eseguire script di sviluppo:

```bash
pipx install hatch
```

Clona il repository:

```bash
git clone https://github.com/LibreTranslate/LibreTranslate.git
cd LibreTranslate
```

Hatch installerà automaticamente le dipendenze richieste in un ambiente virtuale e abiliterà [`pre-commit`](https://pre-commit.com/), che verrà eseguito prima di ogni commit per la formattazione. Puoi ignorare i controlli di `pre-commit` durante il commit, se necessario: `git commit --no-verify -m "Fix"`

Esecuzione in modalità sviluppo:

```bash
hatch run dev --debug
```

Quindi apri un browser web su <http://localhost:5000>

Puoi anche avviare una nuova shell in un ambiente virtuale con libretranslate installato:

```bash
hatch shell
libretranslate [args]
# O
python main.py [args]
```

> Puoi ancora usare `pip install -e ".[test]"` direttamente se non vuoi usare hatch.


## Esecuzione dei test {#esecuzione-dei-test}


Esegui la suite di test e i controlli di linting:

```bash
hatch run test
```

Per visualizzare tutti i `print()` durante il debug:

```bash
hatch run test -s
```

Puoi anche eseguire i test su più versioni di python:

```bash
hatch run all:test
```

Puoi pulire l'ambiente virtuale con:

```bash
hatch env prune
```


## Compilazione con Docker {#compilazione-con-docker}


```bash
docker build -f docker/Dockerfile [--build-arg with_models=true] -t libretranslate .
```

Se vuoi eseguire l'immagine Docker in un ambiente completamente offline, devi aggiungere il parametro `--build-arg with_models=true`. In questo modo i modelli linguistici vengono scaricati durante il processo di build dell'immagine. Altrimenti, questi modelli vengono scaricati al primo avvio dell'immagine/container.

Esegui l'immagine compilata:

```bash
docker run -it -p 5000:5000 libretranslate [args]
```

Oppure compila ed esegui usando Docker Compose:

```bash
docker compose up -d --build
```

> Sentiti libero di modificare il file [`docker-compose.yml`](https://github.com/LibreTranslate/LibreTranslate/blob/main/docker-compose.yml) per adattarlo alle tue esigenze di distribuzione, o usa un file `docker-compose.prod.yml` aggiuntivo per la tua configurazione di distribuzione.
>
> I modelli sono archiviati all'interno del container in `/home/libretranslate/.local/share` e `/home/libretranslate/.local/cache`. Sentiti libero di usare i volumi se non vuoi riscaricare i modelli quando il container viene distrutto. Per aggiornare i modelli, usa l'argomento `--update-models`.


## FAQ {#faq}



### Ambiente Gestito Esternamente {#ambiente-gestito-esternamente}


Alcuni utenti potrebbero riscontrare il seguente errore durante l'installazione dei pacchetti:

```
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    …
```

Questo si verifica quando il sistema operativo dipende da e gestisce Python per le funzionalità principali. In questo caso, è consigliabile installare e configurare venv (ambienti virtuali) per gestire le dipendenze del progetto.

Ciò impedisce che i pacchetti pip vengano installati a livello di sistema. In questo modo, non ci sono rischi di conflitti tra i pacchetti pip di più progetti o con il sistema operativo.
