formations/python-avancé/5-packaging.md

1.2 KiB

Le packaging

Petite parenthèse

La différence entre un paquet et un module ?

Notes:

Pour Python il n'y en a pas, tout est module, pour nous, un paquet est un dossier. Aborder rapidement les paquets-espace-de-noms.

Digression

__main__ et __main__.py.

venv

Notes:

Et ses alternatives : virtualenv / conda.

pip

Notes:

Jamais sudo, toujours dans un venv.

pyproject.toml

pip install -e .

Packager

pip install build
python -m build

Publier

pip install twine
twine upload dist/*

Bonnes habitudes

There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors.

Bonnes habitudes

Pas plus de 7.

Garder son API évolutive

Utilisez correctement / et * dans les prototypes de fonction.

Notes:

help(sum)

Les « linters »

Il existe plusieurs outils pour « relire » votre code :

  • flake8,
  • pylint,
  • mypy,
  • black,
  • bandit,
  • isort,
  • ruff,
  • tox.

Notes: Leur faire implémenter un is_prime(x) pour jouer avec.

pdb

breakpoint()

PYTHONDEVMODE=y

Et ./configure --with-pydebug.