Browse Source

proofread

master
Dimitri Merejkowsky 5 years ago
parent
commit
eb679228fe
1 changed files with 54 additions and 21 deletions
  1. +54
    -21
      sessions/python-11.md

+ 54
- 21
sessions/python-11.md View File

@@ -7,25 +7,25 @@


```python ```python
try: try:
fp = open("file.txt")
file = open("file.txt")
1 / 0 1 / 0
except ZeroDivisionError: except ZeroDivisionError:
print("got you") print("got you")
finally: finally:
print("closing") print("closing")
fp.close()
file.close()
``` ```


# versus # versus


```python ```python
try: try:
fp = open("file.txt")
file = open("file.txt")
1 / 0 1 / 0
except ZeroDivisionError: except ZeroDivisionError:
print("got you") print("got you")


fp.close()
file.close()
``` ```


# Réponse: # Réponse:
@@ -41,18 +41,18 @@ Que se passe-t-il si l'exception *n'est pas* ZeroDivisionError?
```python ```python
import foo import foo


answer = foo.get_answer()
foo.bar()
``` ```


Fonctionne si: 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 * Dans le dossier courant
* Ou dans la bibliothèque standard Python * Ou dans la bibliothèque standard Python


# Parlons de PATH # 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. où sont les exécutables.


```bash ```bash
@@ -60,9 +60,11 @@ PATH="/bin:/usr/bin:/usr/sbin"
$ ifconfig $ ifconfig
# résout sur /usr/sbin/ifconfig # résout sur /usr/sbin/ifconfig
$ ls $ ls
# résount sur /bin/ls
# résout sur /bin/ls
``` ```


Résoudre: trouver le premier élément dans la liste.

# sys.path # sys.path


En Python c'est pareil. En Python c'est pareil.
@@ -82,7 +84,7 @@ print(sys.path)
* /usr/lib/python3.7/site-packages * /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 # À noter


@@ -124,6 +126,12 @@ On peut trouver le code source de `tabulate` facilement.


Mais comment faire pour le mettre dans `sys.path`? 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 # À 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*. 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 # 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 # Intérêt de pip


* Va chercher tout seul sur `pypi` * Va chercher tout seul sur `pypi`
@@ -220,11 +242,12 @@ setup(
* S'utilise avec `python3 -m pip install --user ...` * S'utilise avec `python3 -m pip install --user ...`





# Fonctionnalités en plus # Fonctionnalités en plus


* Peut supprimer quelque chose installé - `python3 -m pip uninstall <>` * Peut supprimer quelque chose installé - `python3 -m pip uninstall <>`
* Peut chercher sur `pypi` directement - `python3 -m pip search <>` * 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 # 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), * 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 pip ne saura pas le mettre à jour - il faudra passer par le gestionnaire de paquet de
la distribution la distribution



# Versions de dépendances # Versions de dépendances


@@ -245,11 +270,21 @@ On peut donner des versions dans `setup.py`:


```python ```python
install_requires=[ 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 # Plusieurs projets


* Projet A utilise `cli-ui` 0.7 * Projet A utilise `cli-ui` 0.7
@@ -259,7 +294,7 @@ Comment faire pour travailler sur les deux projets?


# Environements virtuels # 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. * Contient un binaire python légèrement différent du binaire ordinaire.
* Se crée avec `python3 -m venv <le chemin>` - sauf sous Debian ;-( * Se crée avec `python3 -m venv <le chemin>` - sauf sous Debian ;-(


@@ -302,13 +337,11 @@ C'est plus long, mais ça vous évitera un tas de problèmes ...


# Pour aller plus loin # Pour aller plus loin


* PYTHONPATH
* `requirements.txt` * `requirements.txt`
* `pipenv` * `pipenv`
* `poetry` * `poetry`


Veillez à bien comprendre le problème que ces outils résolvent avant de vous
en servir!

On y reviendra On y reviendra


# #