diff --git a/sessions/python-11.md b/sessions/python-11.md index 813bcfc..da9231c 100644 --- a/sessions/python-11.md +++ b/sessions/python-11.md @@ -7,25 +7,25 @@ ```python try: - fp = open("file.txt") + file = open("file.txt") 1 / 0 except ZeroDivisionError: print("got you") finally: print("closing") - fp.close() + file.close() ``` # versus ```python try: - fp = open("file.txt") + file = open("file.txt") 1 / 0 except ZeroDivisionError: print("got you") -fp.close() +file.close() ``` # Réponse: @@ -41,18 +41,18 @@ Que se passe-t-il si l'exception *n'est pas* ZeroDivisionError? ```python import foo -answer = foo.get_answer() +foo.bar() ``` Fonctionne si: -* Il y a un `foo.py` quelque part qui contient une fonction `get_answer` +* Il y a un `foo.py` quelque part qui contient une fonction `bar` * Dans le dossier courant * Ou dans la bibliothèque standard Python # Parlons de PATH -* Vous connaissez peut-être la variable PATH, qui dit +* Vous connaissez peut-être la variable d'environement PATH, qui dit où sont les exécutables. ```bash @@ -60,9 +60,11 @@ PATH="/bin:/usr/bin:/usr/sbin" $ ifconfig # résout sur /usr/sbin/ifconfig $ ls -# résount sur /bin/ls +# résout sur /bin/ls ``` +Résoudre: trouver le premier élément dans la liste. + # sys.path En Python c'est pareil. @@ -82,7 +84,7 @@ print(sys.path) * /usr/lib/python3.7/site-packages ``` -* Le chemin courant à la priorité sur la bibliothèque standard! +* Le chemin courant a la priorité sur la bibliothèque standard! # À noter @@ -124,6 +126,12 @@ On peut trouver le code source de `tabulate` facilement. Mais comment faire pour le mettre dans `sys.path`? +# Dans la distribution + +Si vous êtes sous Linux, peut-être que vous pouvez utiliser votre +gestionnaire de paquets. + +Du genre: `sudo apt install python3-tabulate`. # À la main @@ -157,14 +165,14 @@ Sur linux, si le paquet contient des *scripts*, ils arriveront dans `~/.local/bi Sous macOS et Windows, ce sera un autre emplacement, mais qui *dépendra de la version de Python*. -* Utilisez `python3 -m` quand c'est possible! +Il faudra peut-être changer le PATH sur votre machine si vous voulez lancer les scripts +directement. Ou alors, utilisez `python3 -m` (quand c'est possible). +Example: -# Avec pip - -* `pip` vient par défaut avec Python3 -* Vous pouvez aussi l'installer avec `get-pip.py` -* Toujours le lancer avec `python3 -m pip`. +``` +python3 -m tabulate +``` # Dépendances @@ -212,6 +220,20 @@ setup( ) ``` +# pypi + +pypi.org: un site que recense plein de bibliothèques python. + +Vive l'open source! + +cli-ui et tabulate y sont présents. + +# pip + +* `pip` vient par défaut avec Python3 +* Vous pouvez aussi l'installer avec `get-pip.py` (python3 get-pip.py --user) +* Toujours le lancer avec `python3 -m pip`. + # Intérêt de pip * Va chercher tout seul sur `pypi` @@ -220,11 +242,12 @@ setup( * S'utilise avec `python3 -m pip install --user ...` + # Fonctionnalités en plus * Peut supprimer quelque chose installé - `python3 -m pip uninstall <>` * Peut chercher sur `pypi` directement - `python3 -m pip search <>` -* Peut lister ce qui est installé - `python3 -m pip list` +* Peut lister ce qui est installé - `python3 -m pip freeze` # Limitations de pip seul @@ -232,6 +255,8 @@ setup( * Si le paquet est déjà installé dans le système (genre `/usr/lib/` sous Linux), pip ne saura pas le mettre à jour - il faudra passer par le gestionnaire de paquet de la distribution + + # Versions de dépendances @@ -245,11 +270,21 @@ On peut donner des versions dans `setup.py`: ```python install_requires=[ - "cli-ui <= 0.8", + "cli-ui < 0.8", ... ] ``` + +# Apparté - pourquoi sudo pip c'est pas une bonne idée + +Les fichiers dans `/usr/lib` sont contrôllés par votre gestionnaire de paquet. + +Les mainteneurs de votre distribution font en sorte qu'ils marchent bien les uns +avec les autres. + +Si vous lancer `sudo pip` vous risquez de casser votre système. + # Plusieurs projets * Projet A utilise `cli-ui` 0.7 @@ -259,7 +294,7 @@ Comment faire pour travailler sur les deux projets? # Environements virtuels -* Un chemin *isolé* du reste du système. +* Un répertoire *isolé* du reste du système. * Contient un binaire python légèrement différent du binaire ordinaire. * Se crée avec `python3 -m venv ` - sauf sous Debian ;-( @@ -302,13 +337,11 @@ C'est plus long, mais ça vous évitera un tas de problèmes ... # Pour aller plus loin +* PYTHONPATH * `requirements.txt` * `pipenv` * `poetry` -Veillez à bien comprendre le problème que ces outils résolvent avant de vous -en servir! - On y reviendra #