From 65c9b1e64d60d7a560c56253ba3bdcfb394f3229 Mon Sep 17 00:00:00 2001 From: jaguarondi Date: Tue, 5 Jan 2016 13:59:29 +0100 Subject: [PATCH 1/6] Move virtualenv in his own point --- source/intro/01-prerequisites.rst | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/source/intro/01-prerequisites.rst b/source/intro/01-prerequisites.rst index b97d146..4ac9232 100644 --- a/source/intro/01-prerequisites.rst +++ b/source/intro/01-prerequisites.rst @@ -4,16 +4,16 @@ Environnement Avant de démarrer le développement, il est nécessaire de passer un peu de temps sur la configuration de l'environnement. -Nous allons utiliser `Python `_, disponible sur la majorité des distributions GNU/Linux, ainsi que sur MacOS, dans des versions parfois différentes. Pour les utilisateurs de Windows, il sera sans doute nécessaire d'installer une version de l'interpréteur et de configurer la variable *PATH* pour votre utilisateur. Ajoutez-y ``virtualenv`` afin de créer un `environnement virtuel `_, puis ``virtualenvwrapper`` pour en faciliter la gestion, et les prérequis seront remplis. - Les morceaux de code seront développés pour Python3.4+ et Django 1.8+. Ils nécessiteront peut-être quelques adaptations pour fonctionner sur une version antérieure. **Remarque** : les commandes qui seront exécutés dans ce livre le seront depuis un shell sous GNU/Linux. Certaines devrons donc être adaptées si vous êtes dans un autre environnemnet. -Création de l'environnement -=========================== +Virtualenv +========== -Commencez par créer un environnement virtuel, afin d'y stocker les dépendances. Vérifiez dans votre fichier ``~/.bashrc`` (ou tout fichier lancé au démarrage de votre session) que la variable ``WORKON_HOME`` est bien définie. Faites ensuite un ``source`` sur le fichier ``virtualenvwrapper.sh`` (à adapter en fonction de votre distribution): +Nous allons utiliser``virtualenv`` afin de créer un `environnement virtuel `_ pour python et ``virtualenvwrapper`` pour en faciliter la gestion, et les prérequis seront remplis. + +Suivant votre OS, il sera sans doute nécessaire d'éditer le fichier ``~/.bashrc`` (ou tout fichier lancé au démarrage de votre session) et de vérifier que la variable ``WORKON_HOME`` est bien définie et de faire un ``source`` sur le fichier ``virtualenvwrapper.sh`` (à adapter en fonction de votre distribution): .. code-block:: shell @@ -26,7 +26,10 @@ Commencez par créer un environnement virtuel, afin d'y stocker les dépendances L'intérêt de ceci ? Ne pas devoir se soucier de l'emplacement des environnements virtuels, et pouvoir entièrement les découpler des sources sur lesquelles vous travaillez, en plus d'isoler le code, de créer un containeur pour les dépendances et d'être indépendant des librairies tierces déjà installées sur le système. -Lancez ``mkvirtualenv gwift-env``. +Création de l'environnement de travail +====================================== + +Commencez par créer un environnement virtuel, afin d'y stocker les dépendances. Lancez ``mkvirtualenv gwift-env``. .. code-block:: shell @@ -39,7 +42,7 @@ Ceci créera l'arborescence de fichiers suivante, qui peut à nouveau être un p .. code-block:: shell - $ ls gwift-env + $ ls .virtualenvs/gwift-env Include/ Lib/ Scripts/ Nous pouvons ensuite l'activer grâce à la commande ``source gwift-env/bin/activate`` avec ``virtualenv`` et ``workon gwift-env`` avec ``virtualenvwrapper``. From 7d12b948c655402f341ead0233501b4d07d89fd2 Mon Sep 17 00:00:00 2001 From: jaguarondi Date: Tue, 5 Jan 2016 14:36:06 +0100 Subject: [PATCH 2/6] Use only virtualenvwrapper and update structure of prerequisites --- source/intro/01-prerequisites.rst | 89 ++++++++++++++++++++----------- 1 file changed, 57 insertions(+), 32 deletions(-) diff --git a/source/intro/01-prerequisites.rst b/source/intro/01-prerequisites.rst index 4ac9232..5ab444e 100644 --- a/source/intro/01-prerequisites.rst +++ b/source/intro/01-prerequisites.rst @@ -26,10 +26,10 @@ Suivant votre OS, il sera sans doute nécessaire d'éditer le fichier ``~/.bashr L'intérêt de ceci ? Ne pas devoir se soucier de l'emplacement des environnements virtuels, et pouvoir entièrement les découpler des sources sur lesquelles vous travaillez, en plus d'isoler le code, de créer un containeur pour les dépendances et d'être indépendant des librairies tierces déjà installées sur le système. -Création de l'environnement de travail -====================================== +Création de l'environnement virtuel +=================================== -Commencez par créer un environnement virtuel, afin d'y stocker les dépendances. Lancez ``mkvirtualenv gwift-env``. +Commencons par créer un environnement virtuel, afin d'y stocker les dépendances. Lancez ``mkvirtualenv gwift-env``. .. code-block:: shell @@ -43,32 +43,36 @@ Ceci créera l'arborescence de fichiers suivante, qui peut à nouveau être un p .. code-block:: shell $ ls .virtualenvs/gwift-env - Include/ Lib/ Scripts/ + bin include lib -Nous pouvons ensuite l'activer grâce à la commande ``source gwift-env/bin/activate`` avec ``virtualenv`` et ``workon gwift-env`` avec ``virtualenvwrapper``. - -A présent, tous les binaires présents dans cet environnement prendront le pas sur les binaires du système. De la même manière, une variable ``PATH`` propre est définie et utilisée, afin que les librairies Python soient stockées dans le répertoire ``gwift-env/Lib/site-packages/``. C'est notamment ici que nous retrouverons le code-source de Django, ainsi que des librairies externes une fois que nous les aurons installées. +Nous pouvons ensuite l'activer grâce à la commande ``workon gwift-env``. .. code-block:: shell - $ tree sources/ .virtualenvs/ - sources/ - ├── gwift-book - ├── gwift-project - └── other-project - .virtualenvs/ - ├── env-01 - └── env-02 + $ workon gwift-env + (gwift-env)$ -Fichiers sources -================ +A présent, tous les binaires présents dans cet environnement prendront le pas sur les binaires du système. De la même manière, une variable ``PATH`` propre est définie et utilisée, afin que les librairies Python y soient stockées. C'est donc dans cet environnement virutel que nous retrouverons le code-source de Django, ainsi que des librairies externes pour python une fois que nous les aurons installées. + +Création du répertoire de travail +================================= Nous commençons par créer le répertoire du projet, à savoir ``gwift-project``. .. code-block:: shell - $ mkdir gwift-project - $ cd gwift-project + (gwift-env)$ mkdir gwift-project + (gwift-env)$ cd gwift-project + +Dans ce répertoire, nous pouvons rajouter les répertoires utiles à la gestion d'un projet: + +.. code-block:: shell + + (gwift-env)$ mkdir docs requirements + (gwift-env)$ touch docs/README.md + +Création du projet Django +========================= Comme l'environnement est activé, on peut à présent y installer Django. La librairie restera indépendante du reste du système, et ne polluera pas les autres projets. @@ -76,7 +80,7 @@ C'est parti: ``pip install django``! .. code-block:: shell - $ pip install django + (gwift-env)$ pip install django Collecting django Downloading Django-1.8.4-py2.py3-none-any.whl (6.2MB) 100% |################################| 6.2MB 91kB/s eta 0:00:01 @@ -85,24 +89,24 @@ C'est parti: ``pip install django``! Les commandes de création d'un nouveau site sont à présent disponibles, la principale étant ``django-admin startproject``. Par la suite, nous utiliserons ``manage.py``, qui constitue un *wrapper* autour de `django-admin`. -Pour démarrer notre projet, nous lançons ``django-admin startproject gwift``. +Pour démarrer notre projet, nous lançons donc ``django-admin startproject gwift``. .. code-block:: shell - $ django-admin startproject gwift + (gwift-env)$ django-admin startproject gwift -Cette action aura pour effet de créer un nouveau dossier ``gwift``, dans lequel on trouve la structure suivante: +Cette action a pour effet de créer un nouveau dossier ``gwift``, dans lequel on trouve la structure suivante: .. code-block:: shell - $ tree gwift + (gwift-env)$ tree gwift gwift - |-- gwift - | |-- __init__.py - | |-- settings.py - | |-- urls.py - | |-- wsgi.py - |-- manage.py + ├── gwift + │   ├── __init__.py + │   ├── settings.py + │   ├── urls.py + │   └── wsgi.py + └── manage.py Chacun de ces fichiers sert à: @@ -125,5 +129,26 @@ Au début de chaque fichier, il suffira d'ajouter la ligne ``-r base.txt``, puis .. code-block:: shell - $ mkdir requirements - $ echo django >> requirements/base.txt + (gwift-env)$ echo django >> requirements/base.txt + +Structure finale de l'environnement +=================================== + +Nous avons donc la strucutre finale pour notre environnement de travail: + +.. code-block:: shell + + (gwift-env)$ tree ~/gwift-project + gwift-project/ + ├── docs + │   └── README.md + ├── gwift + │   ├── gwift + │   │ ├── __init__.py + │   │ ├── settings.py + │   │ ├── urls.py + │   │ └── wsgi.py + │   └── manage.py + └── requirements + └── base.txt + From d9284d67a4a0df1f98c01ac9a3ed7548994c6776 Mon Sep 17 00:00:00 2001 From: jaguarondi Date: Tue, 5 Jan 2016 14:38:40 +0100 Subject: [PATCH 3/6] Add gwift-env on each shell in intro --- source/intro/03-before-going-further.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/intro/03-before-going-further.rst b/source/intro/03-before-going-further.rst index 2b5b0e6..4dea1de 100644 --- a/source/intro/03-before-going-further.rst +++ b/source/intro/03-before-going-further.rst @@ -58,8 +58,8 @@ Attention que celle-ci ne permet pas de vérifier que le code est **bien** test .. code-block:: shell - $ coverage run --source "." manage.py test - $ coverage report + (gwift-env)$ coverage run --source "." manage.py test + (gwift-env)$ coverage report Name Stmts Miss Cover --------------------------------------------- @@ -76,7 +76,7 @@ Attention que celle-ci ne permet pas de vérifier que le code est **bien** test --------------------------------------------- TOTAL 89 32 64% - $ coverage html + (gwift-env)$ coverage html Ceci vous affichera non seulement la couverture de code estimée, et générera également vos fichiers sources avec les branches non couvertes. Pour gagner un peu de temps, n'hésitez pas à créer un fichier ``Makefile`` à la racine du projet. L'exemple ci-dessous permettra, grâce à la commande ``make coverage``, d'arriver au même résultat que ci-dessus: @@ -117,13 +117,13 @@ Dans l'immédiat, nous nous contenterons d'avoir des modules documentés (quelle .. code-block:: shell - pip install flake8_docstrings + (gwift-env)$ pip install flake8_docstrings Lancez ensuite `flake8` avec la commande `flake8 . --exclude="migrations"`. Sur notre projet (presque) vide, le résultat sera le suivant: .. code-block:: shell - $ flake8 . --exclude="migrations" + (gwift-env)$ flake8 . --exclude="migrations" .\gwift\manage.py:1:1: D100 Missing docstring in public module .\gwift\gwift\__init__.py:1:1: D100 Missing docstring in public module .\gwift\gwift\urls.py:1:1: D400 First line should end with a period (not 'n') From ccda9c6337c279cd8de9cec49d57858f98a4dbf6 Mon Sep 17 00:00:00 2001 From: jaguarondi Date: Tue, 5 Jan 2016 14:39:30 +0100 Subject: [PATCH 4/6] Add gwift-env on each shell in intro --- source/intro/02-create-django-app.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/intro/02-create-django-app.rst b/source/intro/02-create-django-app.rst index 207f44e..6af653d 100644 --- a/source/intro/02-create-django-app.rst +++ b/source/intro/02-create-django-app.rst @@ -38,14 +38,14 @@ Cette application servira à structurer les listes de souhaits, les éléments q .. code-block:: shell - $ cd gwift - $ python manage.py startapp wish + (gwift-env)$ cd gwift + (gwift-env)$ python manage.py startapp wish Résultat? Django nous a créé un répertoire ``wish``, dans lequel on trouve les fichiers suivants: .. code-block:: shell - $ ls -l wish + (gwift-env)$ ls -l wish admin.py __init__.py migrations models.py tests.py views.py En résumé, chaque fichier a la fonction suivante: From 72d573af4b974b623a9c5eace428abb690ad57da Mon Sep 17 00:00:00 2001 From: jaguarondi Date: Tue, 5 Jan 2016 14:45:03 +0100 Subject: [PATCH 5/6] correct misspelling --- source/intro/01-prerequisites.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/intro/01-prerequisites.rst b/source/intro/01-prerequisites.rst index 5ab444e..6b684f1 100644 --- a/source/intro/01-prerequisites.rst +++ b/source/intro/01-prerequisites.rst @@ -11,7 +11,7 @@ Les morceaux de code seront développés pour Python3.4+ et Django 1.8+. Ils né Virtualenv ========== -Nous allons utiliser``virtualenv`` afin de créer un `environnement virtuel `_ pour python et ``virtualenvwrapper`` pour en faciliter la gestion, et les prérequis seront remplis. +Nous allons utiliseri ``virtualenv`` afin de créer un `environnement virtuel `_ pour python et ``virtualenvwrapper`` pour en faciliter la gestion, et les prérequis seront remplis. Suivant votre OS, il sera sans doute nécessaire d'éditer le fichier ``~/.bashrc`` (ou tout fichier lancé au démarrage de votre session) et de vérifier que la variable ``WORKON_HOME`` est bien définie et de faire un ``source`` sur le fichier ``virtualenvwrapper.sh`` (à adapter en fonction de votre distribution): From f7fa04ce435fdfce5059f21ed68de193046c7775 Mon Sep 17 00:00:00 2001 From: jaguarondi Date: Thu, 7 Jan 2016 09:53:34 +0100 Subject: [PATCH 6/6] misspelling --- source/intro/01-prerequisites.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/intro/01-prerequisites.rst b/source/intro/01-prerequisites.rst index 6b684f1..8b49c13 100644 --- a/source/intro/01-prerequisites.rst +++ b/source/intro/01-prerequisites.rst @@ -11,9 +11,9 @@ Les morceaux de code seront développés pour Python3.4+ et Django 1.8+. Ils né Virtualenv ========== -Nous allons utiliseri ``virtualenv`` afin de créer un `environnement virtuel `_ pour python et ``virtualenvwrapper`` pour en faciliter la gestion, et les prérequis seront remplis. +Nous allons utiliser ``virtualenv`` afin de créer un `environnement virtuel `_ pour python et ``virtualenvwrapper`` pour en faciliter la gestion, et les prérequis seront remplis. -Suivant votre OS, il sera sans doute nécessaire d'éditer le fichier ``~/.bashrc`` (ou tout fichier lancé au démarrage de votre session) et de vérifier que la variable ``WORKON_HOME`` est bien définie et de faire un ``source`` sur le fichier ``virtualenvwrapper.sh`` (à adapter en fonction de votre distribution): +Suivant votre distribution, il sera sans doute nécessaire d'éditer le fichier ``~/.bashrc`` (ou tout fichier lancé au démarrage de votre session) et de vérifier que la variable ``WORKON_HOME`` est bien définie et de faire un ``source`` sur le fichier ``virtualenvwrapper.sh`` (à adapter en fonction de votre distribution): .. code-block:: shell