Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
python:pip [2022/08/31 06:52] marclebrun |
python:pip [2023/10/07 06:45] (Version actuelle) marclebrun [Mettre à jour tous les packages] |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
* Python Package Index (PyPi) : [[https://pypi.org/]] | * Python Package Index (PyPi) : [[https://pypi.org/]] | ||
- | ===== Pip version ===== | + | ===== Version ===== |
Afficher la version de pip : | Afficher la version de pip : | ||
Ligne 15: | Ligne 15: | ||
<code bash> | <code bash> | ||
pip install --upgrade pip | pip install --upgrade pip | ||
+ | </code> | ||
+ | |||
+ | ===== Configuration ===== | ||
+ | |||
+ | Sous Windows, pour connaître l'emplacement du fichier de configuration de PIP : | ||
+ | |||
+ | <code bash> | ||
+ | pip config -v list | ||
+ | |||
+ | # exemple : | ||
+ | For variant 'global', will try loading 'C:\ProgramData\pip\pip.ini' | ||
+ | For variant 'user', will try loading 'C:\Users\toto\pip\pip.ini' | ||
+ | For variant 'user', will try loading 'C:\Users\toto\AppData\Roaming\pip\pip.ini' | ||
+ | For variant 'site', will try loading 'C:\Program Files\Python310\pip.ini' | ||
+ | </code> | ||
+ | |||
+ | Aucun de ces fichiers n'existait, j'ai donc créé | ||
+ | **C:\Users\toto\pip\pip.ini** et j'y ai mis ceci : | ||
+ | |||
+ | <code ini> | ||
+ | [global] | ||
+ | trusted-host = | ||
+ | mirror1.example.com | ||
+ | mirror2.example.com | ||
</code> | </code> | ||
Ligne 41: | Ligne 65: | ||
<code bash> | <code bash> | ||
pip install <nom-du-package> | pip install <nom-du-package> | ||
+ | </code> | ||
+ | |||
+ | S'il y a une erreur de vérification de certificat SSL (SSLCertVerificationError) | ||
+ | |||
+ | * Soit ajouter les **trusted-host** dans le fichier de configuration | ||
+ | * Soit les ajouter sur la ligne de commande, comme ci-dessous : | ||
+ | |||
+ | <code bash> | ||
+ | pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org <nom-du-package> | ||
+ | </code> | ||
+ | |||
+ | Dans un environnement virtuel, j'ai donc ajouté un fichier **pip.ini** dans le dossier **venv** | ||
+ | avec le contenu suivant : | ||
+ | |||
+ | <code ini> | ||
+ | [global] | ||
+ | trusted-host = | ||
+ | pypi.org | ||
+ | pypi.python.org | ||
+ | files.pythonhosted.org | ||
</code> | </code> | ||
Ligne 54: | Ligne 98: | ||
pip install pip-autoremove | pip install pip-autoremove | ||
pip-autoremove <nom-du-package> | pip-autoremove <nom-du-package> | ||
+ | </code> | ||
+ | |||
+ | Lister les packages qui peuvent être mis à jour : | ||
+ | |||
+ | <code bash> | ||
+ | pip list -o | ||
+ | </code> | ||
+ | |||
+ | Mettre à jour un package : | ||
+ | |||
+ | <code bash> | ||
+ | pip install <nom-du-package> -U | ||
</code> | </code> | ||
Ligne 63: | Ligne 119: | ||
<code bash> | <code bash> | ||
source venv/bin/activate | source venv/bin/activate | ||
- | pip freeze > requirements.txt | + | (venv) pip freeze > requirements.txt |
</code> | </code> | ||
Ligne 70: | Ligne 126: | ||
<code bash> | <code bash> | ||
- | source venv/bin/activate | + | (venv) pip install -r requirements.txt |
- | pip install -r requirements.txt | + | </code> |
+ | |||
+ | ===== Mettre à jour tous les packages ===== | ||
+ | |||
+ | Pour mettre à jour tous les packages de l'environnement virtuel, | ||
+ | il faut fournir à **pip** une liste des packages comportant | ||
+ | uniquement les noms, sans les numéros de versions. | ||
+ | |||
+ | La commande suivante coupe chaque ligne que renvoie **pip freeze** | ||
+ | à chaque signe "=", afin de ne conserver que les noms : | ||
+ | |||
+ | <code bash> | ||
+ | (venv) pip freeze | cut -d'=' -f1 | ||
+ | </code> | ||
+ | |||
+ | Il ne reste plus qu'à fournir cette liste à **pip install -U** et le tour | ||
+ | est joué : | ||
+ | |||
+ | <code bash> | ||
+ | (venv) pip freeze | cut -d'=' -f1 | xargs -n1 pip install -U | ||
+ | </code> | ||
+ | |||
+ | Ensuite si tout fonctionne correctement, on peut recréer un nouveau | ||
+ | fichier **requirements.txt** | ||
+ | |||
+ | <code bash> | ||
+ | (venv) pip freeze > requirements.txt | ||
</code> | </code> | ||