> ## 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.

# Comment créer votre fichier requirements.txt

> Guide complet du fichier requirements.txt en Python : apprenez à le créer, lister les dépendances avec pip freeze, figer les versions et préparer votre projet pour la production.

# 📋 Fichier requirements.txt pour Python

Le fichier `requirements.txt` est le standard de l'industrie pour spécifier et gérer les dépendances dans les projets Python. Ce guide montre comment créer, configurer et utiliser `requirements.txt` pour garantir la cohérence entre les environnements de développement et de production.

## Qu'est-ce qu'un fichier requirements.txt ?

Un fichier `requirements.txt` liste tous les paquets Python externes dont votre projet a besoin, avec leurs versions spécifiques. Cela permet :

* À vous et à votre équipe de maintenir des environnements identiques
* Aux nouveaux collaborateurs de reproduire l'environnement à l'identique
* Au deploy sur Square Cloud de fonctionner avec les bonnes dépendances

***

<Steps>
  <Step title="Activer l'environnement virtuel">
    Travailler à l'intérieur d'un environnement virtuel est essentiel pour garder les dépendances de votre projet isolées du système Python global. Cela évite les conflits de versions et garantit la reproductibilité.

    Activez votre environnement virtuel avec l'une des commandes ci-dessous, selon votre système :

    **Windows :**

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

    **macOS/Linux :**

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

  <Step title="Lister les dépendances du projet">
    <Warning>
      Spécifiez toujours des versions exactes avec `==` pour garantir la reproductibilité et éviter les ruptures dues à des mises à jour incompatibles en production.
    </Warning>

    ### Option A : Créer manuellement (Recommandé)

    Créez un fichier `requirements.txt` à la racine de votre projet et listez tous les paquets externes avec leurs versions :

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

    ### Option B : Générer automatiquement avec pip freeze

    Après avoir installé les dépendances dans votre environnement virtuel, vous pouvez générer le fichier automatiquement. Il existe deux méthodes principales :

    **Option B1 : Utiliser `pip freeze` (inclut tout)**

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

    <Warning>
      Attention : `pip freeze` inclut tous les paquets installés globalement, ce qui peut comprendre des paquets inutiles pour votre projet. Révisez le fichier après génération et supprimez les dépendances qui ne sont pas strictement nécessaires.
    </Warning>

    **Option B2 : Utiliser `pipdeptree` ou `pip freeze` avec filtrage (Recommandé)**

    Pour capturer UNIQUEMENT les dépendances de votre projet (sans les paquets auxiliaires de l'environnement), utilisez :

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

    Ou, pour une solution plus propre, installez `pipdeptree` :

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

    Alternative : Utilisez une vérification manuelle de la liste ou vérifiez quel paquet a été installé spécifiquement pour votre projet :

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

    <Note>
      Si vous travaillez dans un environnement virtuel (recommandé), `pip freeze` fonctionnera parfaitement puisque l'environnement sera isolé et ne contiendra que les dépendances de votre projet.
    </Note>
  </Step>

  <Step title="Réviser et valider les dépendances">
    Ouvrez le fichier `requirements.txt` dans votre éditeur de texte et :

    1. Révisez la liste des paquets
    2. Supprimez les dépendances inutiles
    3. Mettez à jour les versions au besoin
    4. Assurez-vous d'utiliser des versions exactes (avec `==`)
  </Step>

  <Step title="Installer les dépendances">
    Pour installer toutes les dépendances listées :

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

    Cette commande garantit que tous les collaborateurs et les environnements de production utilisent exactement les mêmes versions.
  </Step>

  <Step title="Versionner et partager">
    Une fois `requirements.txt` prêt, vous pouvez :

    * Le partager avec votre équipe
    * Le placer sous contrôle de version (git)
    * Garantir que tout le monde travaille avec les mêmes versions
    * Simplifier le déploiement sur Square Cloud

    Lorsque vous hébergez votre projet sur Square Cloud, le fichier `requirements.txt` est automatiquement détecté et toutes les dépendances sont installées pendant le build.
  </Step>
</Steps>

***

## 💡 Bonnes pratiques et conseils :

* **Restez à jour** : Révisez et mettez à jour `requirements.txt` régulièrement à mesure que vous ajoutez de nouvelles dépendances
* **Utilisez des versions exactes** : Utilisez toujours `==` au lieu de `>`, `>=` ou aucune version pour éviter les surprises en production
* **Révisez pip freeze** : Si vous utilisez `pip freeze`, révisez le fichier avant de le committer, car il peut inclure des paquets auxiliaires inutiles
* **Gestion de versions** : Committez `requirements.txt` dans git pour suivre les changements de dépendances
* **Environnement isolé** : Maintenez un environnement virtuel par projet pour éviter les conflits globaux
* **Testez localement** : Avant de déployer, testez le fichier avec `pip install -r requirements.txt` dans un nouvel environnement

***

## 🚀 Prochaines étapes

Une fois votre fichier `requirements.txt` configuré :

1. Committez-le dans votre dépôt Git.
2. Hébergez votre projet sur **Square Cloud**.
3. Configurez le deploy automatique via GitHub.
4. Bienvenue dans l'hébergement professionnel d'applications Python !

Un fichier `requirements.txt` bien structuré est la base de toute application Python réussie, garantissant que votre application fonctionne parfaitement sur Square Cloud.
