|
Installer Python une première fois ne pose en général pas de problème, et on ajoute en général sans trop de problème des librairies au fur et à mesure des besoins, en ligne de commande ou depuis son IDE.
|
|
Installer Python une première fois ne pose en général pas de problème, et on ajoute en général sans trop de problème des librairies au fur et à mesure des besoins, en ligne de commande ou depuis son IDE.
|
|
|
|
|
|
<details><summary>rappels, comment installer une librairie</summary>
|
|
<details>
|
|
Cas général, en ligne de commande : $ pip install ma_librairie
|
|
<summary>rappels, comment installer une librairie</summary>
|
|
Avec Anaconda ou miniconda : $ conda install ma_librairie update conda
|
|
Cas général, en ligne de commande : $ pip install ma_librairie Avec Anaconda ou miniconda : $ conda install ma_librairie update conda Avec un IDE, par exemple PyCharm : aller dans Files / Settings / Project / Python Interpreter ; cliquez sur le "+" en haut à gauche.
|
|
Avec un IDE, par exemple PyCharm : aller dans Files / Settings / Project / Python Interpreter ; cliquez sur le "+" en haut à gauche.
|
|
</details>![Capture_PythonInterpreter](uploads/c5d2d3ebd14cecd20db408cbf2f892cd/Capture_PythonInterpreter.JPG)
|
|
</details>
|
|
|
|
|
|
|
|
|
|
Pour vérifier quelles bibliothèques sont installées, et en quelle **version**, vous pouvez donc consulter la liste depuis votre IDE ou taper en ligne de commande **pip freeze**. Attention, si vous voulez mettre à jour une librairie existante, il ne suffit pas de refaire la manip d'installation, il faut préciser que vous voulez l'upgrader.
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>rappels, comment upgrader une librairie</summary>
|
|
|
|
Cas général, en ligne de commande : $ pip install --upgrade ma_librairie Avec Anaconda ou miniconda : $ conda update ma_librairie Avec un IDE, par exemple PyCharm : aller dans Files /.../ Python Interpreter, vous avez la liste des modules avec "Version" et "Latest Version"; cliquez sur le numéro de la dernière version
|
|
|
|
</details>Les ennuis commencent en général quand on a besoin d'une version particulière d' est installé, on peut un jour avoir envie de le mettre à jour (la dernière version est actuellement 3.10, il y a maintenant environ une mise à jour par an).
|
|
|
|
|
|
Pour vérifier quelles bibliothèques sont installées, et en quelle **version**, vous pouvez donc consulter la liste depuis votre IDE ou taper en ligne de commande **pip freeze**.
|
|
On peut installer Python pour tous les utilisateurs du PC (donc en mode admin) ou seulement pour soi... Mais on peut également conserver une version antérieure, car on est sûr que nos codes tournent bien avec.. Et puis on a besoin d'installer des paquets, et également de les mettre à jour, éventuellement en gardant aussi une version sous le coude... Bref, on s'y perd vite.
|
|
Attention, si vous voulez mettre à jour une librairie existante, il ne suffit pas de refaire la manip d'installation, il faut préciser que vous voulez l'upgrader.
|
|
|
|
|
|
|
|
<details><summary>rappels, comment upgrader une librairie</summary>
|
|
|
|
Cas général, en ligne de commande : $ pip install --upgrade ma_librairie
|
|
|
|
Avec Anaconda ou miniconda : $ conda update ma_librairie
|
|
|
|
Avec un IDE, par exemple PyCharm : aller dans Files /.../ Python Interpreter, vous avez la liste des modules avec "Version" et "Latest Version"; cliquez sur le numéro de la dernière version
|
|
|
|
</details>
|
|
|
|
|
|
|
|
Les ennuis commencent en général quand on a besoin d'une version particulière d'
|
|
|
|
est installé, on peut un jour avoir envie de le mettre à jour (la dernière version est actuellement 3.10, il y a maintenant environ une mise à jour par an).
|
|
|
|
|
|
|
|
On peut installer Python pour tous les utilisateurs du PC (donc en mode admin) ou seulement pour soi...
|
|
|
|
Mais on peut également conserver une version antérieure, car on est sûr que nos codes tournent bien avec..
|
|
|
|
Et puis on a besoin d'installer des paquets, et également de les mettre à jour, éventuellement en gardant aussi une version sous le coude...
|
|
|
|
Bref, on s'y perd vite.
|
|
|
|
|
|
|
|
Quelques ressources :
|
|
Quelques ressources :
|
|
|
|
|
|
- tuto du site [Pypi](https://packaging.python.org/tutorials/installing-packages/) qui met à disposition un catalogue de paquets
|
|
- tuto du site [Pypi](https://packaging.python.org/tutorials/installing-packages/) qui met à disposition un catalogue de paquets
|
|
- une fois de plus, le cours de [X. Garrido, section gérer son environnement
|
|
- une fois de plus, le cours de [X. Garrido, section gérer son environnement](https://xgarrido.github.io/licence_python_teaching/pdf/01_slide_environnement.pdf)
|
|
](https://xgarrido.github.io/licence_python_teaching/pdf/01_slide_environnement.pdf)
|
|
|
|
- [Python Doctor, en français](https://python.doctor)
|
|
- [Python Doctor, en français](https://python.doctor)
|
|
- [OpenClassRoom](https://openclassrooms.com/fr/courses/6951236-mettez-en-place-votre-environnement-python/7013349-decouvrez-les-paquets-python)
|
|
- [OpenClassRoom](https://openclassrooms.com/fr/courses/6951236-mettez-en-place-votre-environnement-python/7013349-decouvrez-les-paquets-python)
|
|
|
|
|
|
|
|
### point de vocabulaire : script, module, paquets, ajouter enironnements virtuels\*\*...
|
|
|
|
|
|
### point de vocabulaire : script, module, paquets, ajouter enironnements virtuels**...
|
|
Un **script** est un programme sauvegardé dans un fichier **mon_code.py** (par opposition à des instructions tapées dans la console, qui seront perdues...). Quand votre programme va grossir, vous avez intérêt à structurer votre code en plusieurs fichiers, et éventuellement à utiliser du code déjà écrit dans d'autres fichiers \*.py. Vous pouvez alors importer les fonctions et/ou les variables de ces codes, considérés comme **modules**. Il faut que ces fichiers \*.py soient dans le même répertoire que votre script, ou dans un répertoire connu par Python dont la liste est le Python PATH, voir [ce tuto](https://python.doctor/page-python-path-pythonpath). Le plus simple est de les gérer avec votre IDE dans un même "projet", et dans le même répertoire, surtout si vous travaillez à plusieurs : si vous oubliez d'envoyer un des fichiers le code sera inutilisable...
|
|
|
|
|
|
Un **script** est un programme sauvegardé dans un fichier **mon_code.py** (par opposition à des instructions tapées dans la console, qui seront perdues...).
|
|
|
|
Quand votre programme va grossir, vous avez intérêt à structurer votre code en plusieurs fichiers, et éventuellement à utiliser du code déjà écrit dans d'autres fichiers *.py. Vous pouvez alors importer les fonctions et/ou les variables de ces codes, considérés comme **modules**.
|
|
|
|
Il faut que ces fichiers *.py soient dans le même répertoire que votre script, ou dans un répertoire connu par Python dont la liste est le Python PATH, voir [ce tuto](https://python.doctor/page-python-path-pythonpath).
|
|
|
|
Le plus simple est de les gérer avec votre IDE dans un même "projet", et dans le même répertoire, surtout si vous travaillez à plusieurs : si vous oubliez d'envoyer un des fichiers le code sera inutilisable...
|
|
|
|
|
|
|
|
Si vous voulez vraiment garder un fichier module commun à plusieurs projets, modifiez le Python PATH, ou ajoutez le chemin vers le fichier dans le code.
|
|
Si vous voulez vraiment garder un fichier module commun à plusieurs projets, modifiez le Python PATH, ou ajoutez le chemin vers le fichier dans le code.
|
|
|
|
|
|
|
|
```plaintext
|
|
```Python
|
|
|
|
import sys
|
|
import sys
|
|
sys.path.insert(0, "/home/olivier/scripts") # oui, j'ai piqué l'exemple à Python Doctor tel quel
|
|
sys.path.insert(0, "/home/olivier/scripts") # oui, j'ai piqué l'exemple à Python Doctor tel quel
|
|
```
|
|
```
|
|
|
|
|
|
La syntaxe d'import ne fait pas de différence entre des fichiers pythons faits par vous et des packages externes installés (contrairement à d'autres langages qui distinguent include et import)
|
|
La syntaxe d'import ne fait pas de différence entre des fichiers pythons faits par vous et des packages externes installés (contrairement à d'autres langages qui distinguent include et import)
|
|
|
|
|
|
```Python
|
|
```plaintext
|
|
# j'ai besoin de tout ce qu'il y a dans le fichier, je sais ce qu'il y a dedans, il est fait pour mon script
|
|
# j'ai besoin de tout ce qu'il y a dans le fichier, je sais ce qu'il y a dedans, il est fait pour mon script
|
|
from mon_fichier_de_fonctions import * # je peux utiliser la fonction du module via leur nom
|
|
from mon_fichier_de_fonctions import * # je peux utiliser la fonction du module via leur nom
|
|
import mon_fichier_de_fonctions # je peux utiliser la fonction du module via l mon_fichier_de_fonctions.nom_de_fonction
|
|
import mon_fichier_de_fonctions # je peux utiliser la fonction du module via l mon_fichier_de_fonctions.nom_de_fonction
|
... | @@ -58,12 +43,11 @@ import mon_fichier_de_fonctions # je peux utiliser la fonction du module via l |
... | @@ -58,12 +43,11 @@ import mon_fichier_de_fonctions # je peux utiliser la fonction du module via l |
|
from mon_module import ma_fonction_1, ma_fonction_32, ma_classe_71, ma_variable_12, ma_variable2
|
|
from mon_module import ma_fonction_1, ma_fonction_32, ma_classe_71, ma_variable_12, ma_variable2
|
|
```
|
|
```
|
|
|
|
|
|
:warning:vous utiliserez ces autres fichiers *.py pour leurs classes, leurs fonctions et leurs variables, mais peut-être ont-ils aussi un "corps principal", i.e des instructions... Si vous appelez le module avec **import *** elles vont s'exécuter !
|
|
\:warning:vous utiliserez ces autres fichiers \*.py pour leurs classes, leurs fonctions et leurs variables, mais peut-être ont-ils aussi un "corps principal", i.e des instructions... Si vous appelez le module avec \*\*import \*\*\* elles vont s'exécuter !
|
|
|
|
|
|
Pour éviter cela :
|
|
Pour éviter cela : 1)construisez des modules qui ne contiennent que des classes, fonctions et variables 2) si vous avez quand même besoin d'écrire des instructions dans leur corps de programme, pour débuguer ou pour une utilisation spécifique, testez si ce fichier est exécuté en tant que **script** ou bien appelé par un autre code :
|
|
1)construisez des modules qui ne contiennent que des classes, fonctions et variables
|
|
|
|
2) si vous avez quand même besoin d'écrire des instructions dans leur corps de programme, pour débuguer ou pour une utilisation spécifique, testez si ce fichier est exécuté en tant que **script** ou bien appelé par un autre code :
|
|
```plaintext
|
|
```Python
|
|
|
|
if __name__ == __main__:
|
|
if __name__ == __main__:
|
|
# les instructions suivantes sont donc exécutées
|
|
# les instructions suivantes sont donc exécutées
|
|
print("ce fichier est exécuté en tant que script ")
|
|
print("ce fichier est exécuté en tant que script ")
|
... | @@ -71,30 +55,31 @@ else: |
... | @@ -71,30 +55,31 @@ else: |
|
# ce fichier est importé en tant que module par un autre script
|
|
# ce fichier est importé en tant que module par un autre script
|
|
print("j'ai rarement intérêt à exécuter du code dans un module, peut être quelques initialisations")
|
|
print("j'ai rarement intérêt à exécuter du code dans un module, peut être quelques initialisations")
|
|
```
|
|
```
|
|
|
|
|
|
Remarque :
|
|
Remarque :
|
|
|
|
|
|
- on peut aussi **importer des modules dans la console** ! Ils seront connus pour tout le reste de la session...
|
|
- on peut aussi **importer des modules dans la console** ! Ils seront connus pour tout le reste de la session...
|
|
- on peut aussi **importer des modules dans la Jupyterlab** pour ne pas surcharger le notebook et créer des séquences interminables !
|
|
- on peut aussi **importer des modules dans la Jupyterlab** pour ne pas surcharger le notebook et créer des séquences interminables ! :warning: les modules importés dans la console ou dans Jupyter sont importés tels quels et seront connus pour tout le reste de la session... Si vous effectuez des modifications sur le fichier elles ne seront pas prises en compte ! Il faut désinstaller le module ou, avec la console, démarrer une nouvelle session et réimporter.
|
|
:warning: les modules importés dans la console ou dans Jupyter sont importés tels quels et seront connus pour tout le reste de la session... Si vous effectuez des modifications sur le fichier elles ne seront pas prises en compte ! Il faut désinstaller le module ou, avec la console, démarrer une nouvelle session et réimporter.
|
|
|
|
|
|
|
|
**Un paquet** est un ensemble de modules, structurés dans une arborescence. Matplotlib est un paquet, pyplot en est l'un des modules.
|
|
**Un paquet** est un ensemble de modules, structurés dans une arborescence. Matplotlib est un paquet, pyplot en est l'un des modules.
|
|
|
|
|
|
Il est fortement déconseillé de tout importer en bloc avec import module * sauf si vous avez vous-même codé ces modules et que vous êtes certains qu'il n'y a pas d'homonyme... car si deux modules contiennent un objet homonyme votre code va faire des choses bizarres...
|
|
Il est fortement déconseillé de tout importer en bloc avec import module \* sauf si vous avez vous-même codé ces modules et que vous êtes certains qu'il n'y a pas d'homonyme... car si deux modules contiennent un objet homonyme votre code va faire des choses bizarres...
|
|
|
|
|
|
```Python
|
|
```plaintext
|
|
from matplotlib.pyplot import * : vous avez accès à tous les objets de pyplot sans préfixe mais fortement déconseillé ! !
|
|
from matplotlib.pyplot import * : vous avez accès à tous les objets de pyplot sans préfixe mais fortement déconseillé ! !
|
|
from matplotlib import * # fortement déconseillé ; attention vous n'avez pas accès aux objets des sous-modules...
|
|
from matplotlib import * # fortement déconseillé ; attention vous n'avez pas accès aux objets des sous-modules...
|
|
```
|
|
```
|
|
|
|
|
|
il vaut mieux écrire
|
|
il vaut mieux écrire
|
|
|
|
|
|
```Python
|
|
```plaintext
|
|
import module_1 # accès à tous les objets avec module_1 .nom_objet
|
|
import module_1 # accès à tous les objets avec module_1 .nom_objet
|
|
import module_2 # accès à tous les objets avec module_2 .nom_objet
|
|
import module_2 # accès à tous les objets avec module_2 .nom_objet
|
|
|
|
|
|
```
|
|
```
|
|
|
|
|
|
Il est possible de définir un alias au nom de module. Certains modules, même avec des noms courts, ont des alias que tout le monde utilise par convention, ce qui facilite les échanges de code
|
|
Il est possible de définir un alias au nom de module. Certains modules, même avec des noms courts, ont des alias que tout le monde utilise par convention, ce qui facilite les échanges de code
|
|
|
|
|
|
```Python
|
|
```plaintext
|
|
import mon_module_avec_un_nom_super_detaille as module # accès à tous les objets avec module .nom_objet
|
|
import mon_module_avec_un_nom_super_detaille as module # accès à tous les objets avec module .nom_objet
|
|
|
|
|
|
from matplotlib import pyplot as plt # accès aux objets avec plt.nom_objet
|
|
from matplotlib import pyplot as plt # accès aux objets avec plt.nom_objet
|
... | @@ -106,155 +91,129 @@ import seaborn as sn # accès aux objets avec sn.nom_objet |
... | @@ -106,155 +91,129 @@ import seaborn as sn # accès aux objets avec sn.nom_objet |
|
```
|
|
```
|
|
|
|
|
|
Il est également possible d'importer sélectivement certains objets, éventuellement avec des alias
|
|
Il est également possible d'importer sélectivement certains objets, éventuellement avec des alias
|
|
```Python
|
|
|
|
|
|
```plaintext
|
|
from tkinter import filedialog
|
|
from tkinter import filedialog
|
|
from matplotlib.widgets import Slider, CheckButtons
|
|
from matplotlib.widgets import Slider, CheckButtons
|
|
from numpy.random import gumbel
|
|
from numpy.random import gumbel
|
|
from shapely import Polygon as PolygonShapely
|
|
from shapely import Polygon as PolygonShapely
|
|
|
|
|
|
```
|
|
```
|
|
|
|
|
|
Le code de certains paquets est totalement en Python ; c'est le cas de matplotlib et vous avez accès au code : pour d'autres ce sont des exécutables et/ou du code Python.
|
|
Le code de certains paquets est totalement en Python ; c'est le cas de matplotlib et vous avez accès au code : pour d'autres ce sont des exécutables et/ou du code Python.
|
|
|
|
|
|
## Faire un bilan de ce qui est installé
|
|
## Faire un bilan de ce qui est installé
|
|
|
|
|
|
Ouvrir une fenêtre "invite de commande"
|
|
Ouvrir une fenêtre "invite de commande"
|
|
|
|
|
|
>python --version
|
|
> python --version
|
|
|
|
|
|
>Python 3.6.4
|
|
> Python 3.6.4
|
|
|
|
|
|
Apparemment, je suis restée au Python 3.6. Pourtant dans mon IDE je travaille avec Python 3.8. En fait, j'ai plusieurs versions installées, ce qui peut être pertinent à condition de savoir ce que l'on fait !
|
|
Apparemment, je suis restée au Python 3.6. Pourtant dans mon IDE je travaille avec Python 3.8. En fait, j'ai plusieurs versions installées, ce qui peut être pertinent à condition de savoir ce que l'on fait ! :warning: quand je vais installer de nouveaux modules avec pip, ils sont être associés à cette version mentionnée par python --version, donc dans cet exemple Python3.6
|
|
:warning: quand je vais installer de nouveaux modules avec pip, ils sont être associés à cette version mentionnée par python --version, donc dans cet exemple Python3.6
|
|
|
|
|
|
|
|
Dans un IDE, vous avez aussi quelque part dans "settings" l'information sur la version courante. Eventuellement, on vous demandera de préciser la version de Python à la création d'un projet.
|
|
Dans un IDE, vous avez aussi quelque part dans "settings" l'information sur la version courante. Eventuellement, on vous demandera de préciser la version de Python à la création d'un projet.
|
|
|
|
|
|
On présente dans la suite comment gérer ses paquets et utiliser les bonnes version hors IDE (pip en invite de commande et venv), ce qui permet de présenter les notions. On mentionne ensuite que l'on peut tout gérer depuis son IDE, ce qui est souvent plus pratique.
|
|
On présente dans la suite comment gérer ses paquets et utiliser les bonnes version hors IDE (pip en invite de commande et venv), ce qui permet de présenter les notions. On mentionne ensuite que l'on peut tout gérer depuis son IDE, ce qui est souvent plus pratique. Si on a plusieurs versions de Python et qu'on installe un module avec PIP, on peut avoir la désagréable surprise de ne pas avoir accès à ce module depuis son IDE... L'IDE permet de mieux visualiser ce que l'on installe pour quelle version de Python.
|
|
Si on a plusieurs versions de Python et qu'on installe un module avec PIP, on peut avoir la désagréable surprise de ne pas avoir accès à ce module depuis son IDE... L'IDE permet de mieux visualiser ce que l'on installe pour quelle version de Python.
|
|
|
|
|
|
|
|
|
|
|
|
## installer des paquets et les mettre à jour
|
|
## installer des paquets et les mettre à jour
|
|
|
|
|
|
**Pypi** est le dépôt tiers officiel du langage de programmation Python. Son objectif est de doter la communauté des développeurs Python d'un catalogue complet recensant tous les paquets Python libres.
|
|
**Pypi** est le dépôt tiers officiel du langage de programmation Python. Son objectif est de doter la communauté des développeurs Python d'un catalogue complet recensant tous les paquets Python libres. Voir le [site Pypi](https://pypi.org/). Il est donc possible de récupérer facilement des tas de modules développés par d'autres. On peut gérer ses depuis l'invite de commande avec PIP ou depuis votre IDE.
|
|
Voir le [site Pypi](https://pypi.org/).
|
|
|
|
Il est donc possible de récupérer facilement des tas de modules développés par d'autres.
|
|
|
|
On peut gérer ses depuis l'invite de commande avec PIP ou depuis votre IDE.
|
|
|
|
|
|
|
|
### avec PIP, Python Package Index
|
|
### avec PIP, Python Package Index
|
|
L'installeur de paquets PIP est fourni avec Python depuis la version 3.4.
|
|
|
|
Il fonctionne en ligne de commande dans l'invite de commande.
|
|
|
|
En windows, c'est la fenêtre sur fond noir qui rappelle l'époque du DOS... On l'ouvre sous windows avec le menu fenêtre, éventuellement en tant qu'administrateur : clic doit puis "exécuter en tant qu'administrateur)
|
|
|
|
|
|
|
|
>pip --version
|
|
L'installeur de paquets PIP est fourni avec Python depuis la version 3.4. Il fonctionne en ligne de commande dans l'invite de commande. En windows, c'est la fenêtre sur fond noir qui rappelle l'époque du DOS... On l'ouvre sous windows avec le menu fenêtre, éventuellement en tant qu'administrateur : clic doit puis "exécuter en tant qu'administrateur)
|
|
|
|
|
|
>pip 20.2.3 from C:\Users\christine.poulard\AppData\Roaming\Python\Python36\site-packages\pip (python 3.6)
|
|
> pip --version
|
|
|
|
|
|
|
|
> pip 20.2.3 from C:\\Users\\christine.poulard\\AppData\\Roaming\\Python\\Python36\\site-packages\\pip (python 3.6)
|
|
|
|
|
|
#### installer un paquet présent sur Pypi
|
|
#### installer un paquet présent sur Pypi
|
|
|
|
|
|
Pour installer un paquet (et toutes ses dépendances) :
|
|
Pour installer un paquet (et toutes ses dépendances) :
|
|
|
|
|
|
> pip install matplotlib
|
|
> pip install matplotlib
|
|
|
|
|
|
Dans certains cas, vous aurez besoin d'installer un paquet en spécifiant un chemin ; voir la doc de Pypi.
|
|
Dans certains cas, vous aurez besoin d'installer un paquet en spécifiant un chemin ; voir la doc de Pypi. A partir du lien d'un git par exemple :
|
|
A partir du lien d'un git par exemple :
|
|
|
|
> python3 -m pip install -e git+https://git.repo/some_pkg.git#egg=SomeProject
|
|
|
|
|
|
|
|
Le nouveau paquet est disponible maintenant, mais pour l'utiliser dans un de vos codes il faudra d'abord l'importer en précisant en début de script ou dans la console pour une utilisation en console, par exemple :
|
|
> python3 -m pip install -e git+<https://git.repo/some_pkg.git#egg=SomeProject>
|
|
|
|
|
|
|
|
Le nouveau paquet est disponible maintenant, mais pour l'utiliser dans un de vos codes il faudra d'abord l'importer en précisant en début de script ou dans la console pour une utilisation en console, par exemple :\
|
|
from matplotlib import pyplot as plt
|
|
from matplotlib import pyplot as plt
|
|
|
|
|
|
Suppression d’un paquet :
|
|
Suppression d’un paquet :
|
|
>pip uninstall matplotlib
|
|
|
|
|
|
> pip uninstall matplotlib
|
|
|
|
|
|
#### vérifier les paquets installés
|
|
#### vérifier les paquets installés
|
|
|
|
|
|
Avoir des infos sur un paquet :
|
|
Avoir des infos sur un paquet :
|
|
>pip show matplotlib
|
|
|
|
|
|
> pip show matplotlib
|
|
>Name: matplotlib
|
|
|
|
Version: 3.3.4
|
|
> Name: matplotlib Version: 3.3.4 Summary: Python plotting package Home-page: <https://matplotlib.org> Author: John D. Hunter, Michael Droettboom Author-email: [matplotlib-users@python.org](mailto:matplotlib-users@python.org) License: PSF Location: c:\\users\\christine.poulard\\appdata\\local\\programs\\python\\python36-32\\lib\\site-packages Requires: cycler, numpy, pillow, python-dateutil, kiwisolver, pyparsing Required-by: seaborn
|
|
Summary: Python plotting package
|
|
|
|
Home-page: https://matplotlib.org
|
|
|
|
Author: John D. Hunter, Michael Droettboom
|
|
|
|
Author-email: matplotlib-users@python.org
|
|
|
|
License: PSF
|
|
|
|
Location: c:\users\christine.poulard\appdata\local\programs\python\python36-32\lib\site-packages
|
|
|
|
Requires: cycler, numpy, pillow, python-dateutil, kiwisolver, pyparsing
|
|
|
|
Required-by: seaborn
|
|
|
|
|
|
|
|
Liste des modules utilisés, avec leur numéro de version
|
|
Liste des modules utilisés, avec leur numéro de version
|
|
>pip freeze
|
|
|
|
|
|
|
|
>bleach==2.1.3
|
|
> pip freeze
|
|
bokeh==2.2.1
|
|
|
|
certifi==2018.11.29
|
|
> bleach==2.1.3 bokeh==2.2.1 certifi==2018.11.29 chardet==3.0.4 (...)etc.
|
|
chardet==3.0.4
|
|
|
|
(...)etc.
|
|
|
|
|
|
|
|
Je découvre des paquets que je ne me souviens pas avoir installés (sans doute des **dépendances** d'autres paquets), des paquets que je n'ai pas utilisés depuis longtemps, et peut-être aussi des paquets que j'utilise tout le temps sans savoir qu'il existe des mises à jour qui m'attendent...
|
|
Je découvre des paquets que je ne me souviens pas avoir installés (sans doute des **dépendances** d'autres paquets), des paquets que je n'ai pas utilisés depuis longtemps, et peut-être aussi des paquets que j'utilise tout le temps sans savoir qu'il existe des mises à jour qui m'attendent...
|
|
|
|
|
|
#### mettre à jour
|
|
#### mettre à jour
|
|
|
|
|
|
A chaque nouvelle installation PIP vérifiera sa version et vous proposera éventuellement une mise à jour. Il ne s'en charge que pour lui-même !
|
|
A chaque nouvelle installation PIP vérifiera sa version et vous proposera éventuellement une mise à jour. Il ne s'en charge que pour lui-même ! Pour vérifier si vos paquets sont à jour et comparer votre version avec la dernière sortie :
|
|
Pour vérifier si vos paquets sont à jour et comparer votre version avec la dernière sortie :
|
|
|
|
|
|
> M:>pip list --outdated
|
|
>M:\>pip list --outdated
|
|
|
|
|
|
> Package Version Latest Type
|
|
>Package Version Latest Type
|
|
|
|
-------------------- ---------- --------- -----
|
|
---
|
|
bleach 2.1.3 3.3.0 wheel
|
|
|
|
bokeh 2.2.1 2.3.2 sdist
|
|
bleach 2.1.3 3.3.0 wheel bokeh 2.2.1 2.3.2 sdist certifi 2018.11.29 2020.12.5 wheel chardet 3.0.4 4.0.0 wheel (...) cligj 0.4.0 0.7.1 wheel cloudpickle 0.8.0 1.6.0 wheel (...) dask 1.1.1 2021.3.0 wheel datashader 0.6.9 0.12.1 wheel decorator 4.3.2 5.0.7 wheel
|
|
certifi 2018.11.29 2020.12.5 wheel
|
|
|
|
chardet 3.0.4 4.0.0 wheel
|
|
|
|
(...)
|
|
|
|
cligj 0.4.0 0.7.1 wheel
|
|
|
|
cloudpickle 0.8.0 1.6.0 wheel
|
|
|
|
(...)
|
|
|
|
dask 1.1.1 2021.3.0 wheel
|
|
|
|
datashader 0.6.9 0.12.1 wheel
|
|
|
|
decorator 4.3.2 5.0.7 wheel
|
|
|
|
|
|
|
|
Si je cherche à réinstaller datashader, par exemple, PIP va me répondre qu'il est déjà là :
|
|
Si je cherche à réinstaller datashader, par exemple, PIP va me répondre qu'il est déjà là :
|
|
>pip install datashader
|
|
|
|
|
|
|
|
> Requirement already satisfied: datashader in c:\users\christine.poulard\appdata\local\programs\python\python36-32\lib\site-packages (0.6.9)
|
|
> pip install datashader
|
|
(...)
|
|
|
|
|
|
> Requirement already satisfied: datashader in c:\\users\\christine.poulard\\appdata\\local\\programs\\python\\python36-32\\lib\\site-packages (0.6.9) (...)
|
|
|
|
|
|
Pour forcer la mise à jour :
|
|
Pour forcer la mise à jour :
|
|
>pip install datashader --upgrade
|
|
|
|
|
|
|
|
> (...)
|
|
> pip install datashader --upgrade
|
|
Installing collected packages: datashader
|
|
|
|
Attempting uninstall: datashader
|
|
> (...) Installing collected packages: datashader Attempting uninstall: datashader Found existing installation: datashader 0.6.9 Uninstalling datashader-0.6.9: Successfully uninstalled datashader-0.6.9 Successfully installed datashader-0.12.1
|
|
Found existing installation: datashader 0.6.9
|
|
|
|
Uninstalling datashader-0.6.9:
|
|
|
|
Successfully uninstalled datashader-0.6.9
|
|
|
|
Successfully installed datashader-0.12.1
|
|
|
|
|
|
|
|
Sinon, je peux aussi installer un module d'une version précise :
|
|
Sinon, je peux aussi installer un module d'une version précise :
|
|
|
|
|
|
> pip install matplotlib==1.5.0
|
|
> pip install matplotlib==1.5.0
|
|
|
|
|
|
Un de soucis de Python et ses modules est le manque de **rétrocompatibilité** : rien ne garantit que vos codes continueront à fonctionner tels quels au fur et à mesure des mises à jour. Les plus polis, comme Matplotlib vous préviennent que telle ou telle façon de faire ne sera bientôt plus possible (DeprecationWarning).
|
|
Un de soucis de Python et ses modules est le manque de **rétrocompatibilité** : rien ne garantit que vos codes continueront à fonctionner tels quels au fur et à mesure des mises à jour. Les plus polis, comme Matplotlib vous préviennent que telle ou telle façon de faire ne sera bientôt plus possible (DeprecationWarning).
|
|
|
|
|
|
```Python
|
|
```plaintext
|
|
D:/2021_AtelierPython/main.py:69: MatplotlibDeprecationWarning:
|
|
D:/2021_AtelierPython/main.py:69: MatplotlibDeprecationWarning:
|
|
The set_window_title function was deprecated in Matplotlib 3.4 and will be removed two minor releases later. Use manager.set_window_title or GUI-specific methods instead.
|
|
The set_window_title function was deprecated in Matplotlib 3.4 and will be removed two minor releases later. Use manager.set_window_title or GUI-specific methods instead.
|
|
fig.canvas.set_window_title("ScE - Hydrologie - Démo probas crue sur N années")
|
|
fig.canvas.set_window_title("ScE - Hydrologie - Démo probas crue sur N années")
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
:warning: une belle blague avec le module shapefile, utilisé dans l'atelier D (carte) !
|
|
:warning: une belle blague avec le module shapefile, utilisé dans l'atelier D (carte) !
|
|
|
|
|
|
> pip install pyshp
|
|
> pip install pyshp
|
|
|
|
|
|
mais ensuite
|
|
mais ensuite
|
|
```Python
|
|
|
|
|
|
```plaintext
|
|
import shapefile
|
|
import shapefile
|
|
```
|
|
```
|
|
|
|
|
|
#### Notion d'environnement virtuel avec venv
|
|
#### Notion d'environnement virtuel avec venv
|
|
Pour s'y retrouver dans cette jungle de versions, dont on peut avoir besoin de l'une ou l'autre selon les cas, il existe la notion Environnements virtuel.
|
|
|
|
On déclare les paquets et leurs versions dans un fichier, et on rend le fichier actif avec venv
|
|
|
|
|
|
|
|
> python3.5 -m venv ~/python.d/my_python_env
|
|
Pour s'y retrouver dans cette jungle de versions, dont on peut avoir besoin de l'une ou l'autre selon les cas, il existe la notion Environnements virtuel. On déclare les paquets et leurs versions dans un fichier, et on rend le fichier actif avec venv
|
|
|
|
|
|
|
|
> python3.5 -m venv \~/python.d/my_python_env
|
|
|
|
|
|
Un environnement virtuel permet d’avoir des installations de Python isolées entre elles (une Python 3.6 et une Python 3.10) et de travailler avec différentes versions des modules selon les projets.
|
|
Un environnement virtuel permet d’avoir des installations de Python isolées entre elles (une Python 3.6 et une Python 3.10) et de travailler avec différentes versions des modules selon les projets.
|
|
|
|
|
|
## Gestion des paquets avec votre IDE
|
|
## Gestion des paquets avec votre IDE
|
|
Vous pouvez aussi gérer tout cela depuis votre IDE.
|
|
|
|
Voir la doc selon votre IDE ; cette partie sera complétée au besoin |
|
Vous pouvez aussi gérer tout cela depuis votre IDE. Voir la doc selon votre IDE ; cette partie sera complétée au besoin |
|
\ No newline at end of file |
|
\ No newline at end of file |