= Environnement de travail

Avant de démarrer le développement, il est nécessaire de passer un peu de temps sur la configuration de l'environnement.

Les morceaux de code seront développés pour Python3.6+ et Django 3.0+. Ils nécessiteront peut-être quelques adaptations pour fonctionner sur une version antérieure.

Django fonctionne sur un link:roulement de trois versions mineures pour une version majeure[https://docs.djangoproject.com/en/dev/internals/release-process/], clôturé par une version LTS (_Long Term Support_).

image::http://ser-libre.com.ar/wp-content/uploads/2016/11/django.png[Support des versions Django]

Ce sera une bonne indication à prendre en considération pour nos dépendances, puisqu'en visant une version particulière, on ne devra pratiquement pas se soucier (bon, un peu quand même...) des dépendances à installer, pour peu qu'on reste sous un certain seuil.

Dans cette partie, on va parler de *méthode de travail*, avec un objectif visé. On peut éviter que l'application ne tourne que sur notre machine et que chaque déploiement ne soit une plaie à gérer. Chaque mise à jour doit se limiter au minimum: 

. démarrer un script, 
. prévoir un rollback si cela plante
. se préparer une tisane en regardant nos flux RSS (si cette technologie existe encore...).

**Remarque** : les commandes qui seront exécutés dans ce livre le seront depuis un shell sous GNU/Linux. Certaines devront donc être adaptées si vous êtes dans un autre environnemnet.

include::12-factors.adoc[]

include::maintainable-applications.adoc[]

include::environment.adoc[]

include::venvs.adoc[]

include::toolchain/django.adoc[]

include::toolchain/tools.adoc[]

include::toolchain/external_tools.adoc[]

include::unit_tests.adoc[]

include::toolchain/summary.adoc[]