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

# Gestion des dépendances

> Apprenez à installer et gérer les packages et dépendances pour votre Replit App dans différents langages.

Replit propose plusieurs façons d'installer et de gérer les packages pour votre Replit App. Vous pouvez installer des packages via le [Shell](/references/editor/shell), demander à [Agent](/references/agent/overview/) de le faire pour vous, ou laisser Replit détecter et installer automatiquement les dépendances manquantes lorsque vous exécutez votre Replit App.

## Installer des packages via le Shell

Ouvrez l'outil **Shell** dans l'Éditeur de projet et exécutez la commande appropriée pour le gestionnaire de packages de votre langage :

<CodeGroup>
  ```bash Node.js (npm) theme={null}
  npm install <nom-du-package>
  ```

  ```bash Node.js (pnpm) theme={null}
  pnpm add <nom-du-package>
  ```

  ```bash Python (poetry) theme={null}
  poetry add <nom-du-package>
  ```

  ```bash Python (pip) theme={null}
  pip install <nom-du-package>
  ```

  ```bash Ruby theme={null}
  bundle add <nom-du-gem>
  ```
</CodeGroup>

Vous pouvez également utiliser le [Gestionnaire de packages universel (UPM)](https://github.com/replit/upm/) de Replit pour installer des packages dans les langages pris en charge :

```bash theme={null}
upm add <nom-du-package>
```

Pour installer une version spécifique :

```bash theme={null}
upm add 'flask==2.3.3'
```

Pour tous les langages et gestionnaires de packages pris en charge, voir [UPM : Langages pris en charge](https://github.com/replit/upm/#supported-languages).

## Installer des packages via Agent

Vous pouvez demander à [Agent](/references/agent/overview/) d'installer des packages directement dans le chat. Par exemple :

* « Installe le package axios »
* « Ajoute Flask et SQLAlchemy à mon projet »
* « Configure TailwindCSS »

Agent installe le package en utilisant le gestionnaire de packages approprié pour votre projet et met à jour les fichiers de configuration pertinents.

## Détection automatique des imports

Replit analyse automatiquement votre code à la recherche de dépendances manquantes chaque fois que vous sélectionnez **Exécuter**. Si votre code importe un package qui n'est pas encore installé, Replit le détecte et installe automatiquement la dernière version.

Par exemple, si vous ajoutez `import flask` à `main.py`, la prochaine fois que vous sélectionnez **Exécuter**, la **Console** affiche un message indiquant que **Flask** est en cours d'installation.

<Note>
  Vous pouvez configurer la détection automatique des imports dans le fichier [.replit](/references/configuration/configuration#replit-file) en utilisant le paramètre `packager.features.guessImports`.
</Note>

### Remplacer la détection automatique

Si le mauvais package a été détecté, ou si vous avez besoin d'une version spécifique, exécutez la commande d'installation correcte dans le Shell. Par exemple :

```bash theme={null}
upm add 'flask==2.3.3'
```

Vous pouvez également exclure des packages ou des chemins spécifiques de la détection automatique dans votre fichier [.replit](/references/configuration/configuration#replit-file) :

## Gestionnaires de packages Python

Lorsque vous créez une Replit App Python, votre gestionnaire de packages est **poetry** par défaut. Cela signifie que `pip install` ne gère pas vos dépendances. Utilisez plutôt `poetry add <package>` ou `upm add <package>` dans le Shell.

### Passer de poetry à pip

Si vous préférez utiliser `pip`, suivez ces étapes :

<Steps>
  <Step>
    Ouvrez le Shell et exécutez :

    Supprimez le fichier de verrouillage afin que l'infrastructure de packaging passe à pip :

    ```bash theme={null}
    rm poetry.lock
    ```
  </Step>

  <Step title="Déplacer vos dépendances">
    Transférez vos dépendances de la section `[tool.poetry.dependencies]` dans `pyproject.toml` vers `requirements.txt`. Par exemple, `flask = "^3.0.2"` devient `flask>=3.0.2,<4`.
  </Step>

  <Step title="Nettoyer pyproject.toml">
    Supprimez les sections `[tool.poetry...]` de `pyproject.toml`.
  </Step>
</Steps>

Après ces modifications, l'infrastructure de packaging utilise `pip` pour toutes les opérations futures, et la détection automatique des imports continue de fonctionner comme prévu.

## Dépendances système avec Nix

Replit prend en charge tous les langages de programmation grâce à l'intégration avec [Nix](https://nixos.org/). Si vous avez besoin de dépendances au niveau système au-delà des packages de langages standard, vous pouvez les ajouter à votre fichier [replit.nix](/references/configuration/configuration#replit-nix-file).

### Packages Nix

Ajoutez des dépendances au niveau système en modifiant directement `replit.nix`. Vous pouvez rechercher les packages disponibles sur [search.nixos.org](https://search.nixos.org/packages).

### Modules

Les modules combinent la prise en charge des langages de programmation, des formateurs et des gestionnaires de packages. Ils constituent la base de votre Replit App. Si vous créez une Replit App à partir d'un modèle ou d'un dépôt GitHub, Replit installe automatiquement les modules requis.

Vous pouvez personnaliser les modules et d'autres paramètres Nix en utilisant le fichier [.replit](/references/configuration/configuration#replit-file).

## Configuration du gestionnaire de packages

Vous pouvez affiner le comportement de gestion des packages dans votre fichier [.replit](/references/configuration/configuration#replit-file) :

| Paramètre                             | Description                                                                      | Par défaut              |
| ------------------------------------- | -------------------------------------------------------------------------------- | ----------------------- |
| `packager.language`                   | Langage utilisé pour les opérations de packages                                  | Détecté automatiquement |
| `packager.features.guessImports`      | Détecter et installer automatiquement les packages manquants lors de l'exécution | `true`                  |
| `packager.features.packageSearch`     | Activer la prise en charge de la recherche de packages                           | `true`                  |
| `packager.features.enabledForHosting` | Exiger l'installation des packages lors de l'hébergement                         | `false`                 |
| `packager.afterInstall`               | Commande à exécuter après l'installation d'un package                            | —                       |
| `packager.ignoredPaths`               | Chemins à ignorer lors de la détection des imports                               | `[]`                    |
| `packager.ignoredPackages`            | Packages à exclure de la détection automatique                                   | `[]`                    |
