Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
utilisateurs:hypathie:tutos:developpement-pyhon-utiliser-django [08/12/2015 12:04] Hypathie [Configurations et installation de Django avec SQLite3] |
utilisateurs:hypathie:tutos:developpement-pyhon-utiliser-django [08/12/2015 15:27] Hypathie [Créer des projets Django en python2 ou python3] |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
- | =====Avant de commencer ==== | + | ===== Installations ===== |
- | Sur Jessie python et python 3 sont tous deux installés. | + | **Installer les outils et bibliothèques pour développer en python ou python3** |
- | ==== Installer les outils et bibliothèques pour développer en python ou python 3 ==== | + | <note tip> |
+ | Sur Jessie, python et python 3 sont tous deux installés. | ||
+ | </note> | ||
* Fichiers d'en-tête de Python | * Fichiers d'en-tête de Python | ||
Ligne 64: | Ligne 66: | ||
<code root>apt-get install tree</code> | <code root>apt-get install tree</code> | ||
- | ====Préparer son système pour travailler avec python2 et python3==== | ||
- | ===Utiliser update-alternatives pour choisir l'une ou l'autre des versions:=== | + | ===== Créer des projets Django en python2 ou python3===== |
- | * Charger les différentes versions de Python : | + | ===Les versions de python sur sa Jessie === |
- | + | ||
- | <code root>update-alternatives --list python</code> | + | |
- | <code retour>update-alternatives: error: no alternatives for python</code> | + | |
- | + | ||
- | * Pour voir où sont les exécutables des deux versions disponibles de python : | + | |
<code user> ls /usr/bin/python*</code> | <code user> ls /usr/bin/python*</code> | ||
Ligne 84: | Ligne 80: | ||
</code> | </code> | ||
- | * Pour ajouter à la liste de update-alternatives les deux versions de python disponibles : | + | <note tip> |
- | (ici par exemple; "/usr/bin/python2.7" et "/usr/bin/python3.4 ") | + | L'idée suivie ici est de pouvoir aussi bien créer des projets Django codés en python 3 tandis que c'est la version python 2 qui est en place sur tout le système que l'inverse, c'est-à-dire, pouvoir créer des projects Django codés en python2 alors que c'est python 3 qui est mise en place sur tout le système. \\ |
- | <code root>update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1</code> | + | Pour ce faire, on va créer un environnement virtuel dans un dossier créé dans le repertoire courant de l'utilisateur du système. |
- | <code root>update-alternatives --install /usr/bin/python python /usr/bin/python3.4 2</code> | + | On pourra alors installer Django aussi bien pour y coder en python2 qu'en python3, sans se soucier de la version mise en place sur l'ensemble du système. \\ |
- | - Pour voir la nouvelle liste de update-alternatives : | + | Cela évitera aussi de se mélanger les pinceaux entre les utilitaires ''pip install ...'' ou ''pip3 install ...''. \\ |
- | <code root>update-alternatives --list python</code> | + | On n'utilisera pas ''virtualenv'' seul, mais on l'utilisera avec ''pyenv'' afin de s'éviter quelque conflits lors de l'installation de django. \\ |
- | <code retour> /usr/bin/python2.7 | + | |
- | /usr/bin/python3.4</code> | + | |
- | + | ||
- | + | ||
- | - On va laisser tout le système configurer avec python3 dans un premier temps : | + | |
- | + | ||
- | <code root>update-alternatives --config python</code> | + | |
- | <code retour> | + | |
- | Il existe 2 choix pour l'alternative python (qui fournit /usr/bin/python). | + | |
- | + | ||
- | Sélection Chemin Priorité État | + | |
- | ------------------------------------------------------------ | + | |
- | * 0 /usr/bin/python3.4 2 mode automatique | + | |
- | 1 /usr/bin/python2.7 1 mode manuel | + | |
- | 2 /usr/bin/python3.4 2 mode manuel | + | |
- | + | ||
- | Appuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le num | + | |
- | </code> | + | |
- | + | ||
- | On choisit la sélection correspondante à python2.7 pour tout le système. Ici c'est le choix n°1. | + | |
- | + | ||
- | <note warning> | + | |
- | * À savoir pour supprimer l'un des choix de la liste : | + | |
- | + | ||
- | <code root>update-alternatives --remove python /usr/bin/python2.7</code> | + | |
- | + | ||
- | * Ne jamais désinstaller les versions inférieures à python 3 ! \\ De nombreux logiciels ne fonctionneraient plus. | + | |
- | + | ||
- | ''<del>apt-get purge python</del>'' | + | |
- | </note> | + | |
- | + | ||
- | * Pour vérifier | + | |
- | + | ||
- | <code root>python --version</code> | + | |
- | <code retour>Python 2.7.9</code> | + | |
- | + | ||
- | <note tip> | + | |
- | L'idée suivie ici sera de conserver python2 pour tout le système, et de mettre en place python3 dans un environnement virtuel consacré aux projets django. \\ | + | |
- | + | ||
- | Pour installer Django avec python3 y compris **dans un environnement virtuel on n'utilisera pas** ''virtualenv'', afin de s'éviter quelque conflits lors de l'installation de django. \\ | + | |
En effet : | En effet : | ||
Ligne 165: | Ligne 121: | ||
</code> | </code> | ||
- | </note> | + | :-/ |
+ | <code user>rm -r ~/MonPy3Django</code> | ||
+ | </note> | ||
- | + | ==== Installer pyenv==== | |
- | ===Configurer son système avec Python3 pour l'utilisateur courant :=== | + | |
- | + | ||
- | * On édite le fichier "~/bashrc" : | + | |
- | + | ||
- | <code user>vim ~/.bashrc</code> | + | |
- | + | ||
- | * On ajoute cet alias : | + | |
- | + | ||
- | <code> | + | |
- | alias python='/usr/bin/python3.4' | + | |
- | </code> | + | |
- | + | ||
- | * On enregistre puis on actualise l'environnement de l'utilisateur courant : | + | |
- | + | ||
- | <code user>. ~/.bashrc</code> | + | |
- | + | ||
- | <code user>python --version</code> | + | |
- | + | ||
- | <code retour>Python 3.4.2</code> | + | |
- | + | ||
- | + | ||
- | ===== Configurations et installation de Django avec SQLite3===== | + | |
- | + | ||
- | ==== Installer Django dans un environnement virtuel avec pyenv==== | + | |
<code user>git clone https://github.com/yyuu/pyenv.git ~/.pyenv</code> | <code user>git clone https://github.com/yyuu/pyenv.git ~/.pyenv</code> | ||
Ligne 232: | Ligne 166: | ||
3.4.3</code> | 3.4.3</code> | ||
| | ||
- | * les commandes pyenv | + | ===Quelques commandes pyenv=== |
- | + | ||
- | <code user>pyenv +lacommande</code> | + | |
* Avoir une liste des commandes pyenv | * Avoir une liste des commandes pyenv | ||
Ligne 253: | Ligne 185: | ||
</code> | </code> | ||
- | * Configurer la version du shell pyenv pour choisir sa version de python | + | * Comment lancer une commande pyenv |
- | - Pour que le shell utilise la version 2 installée plutôt | + | |
+ | <code user>pyenv +lacommande</code> | ||
+ | |||
+ | * Pour coder dans une version de python, on appelle le shell de pyenv de la version souhaitée | ||
+ | |||
+ | - Pour que le shell de pyenv utilise la version 2 (installée plutôt) | ||
<code user>pyenv shell 2.7.9</code> | <code user>pyenv shell 2.7.9</code> | ||
- Pour savoir quelle est la version de son shell | - Pour savoir quelle est la version de son shell | ||
Ligne 266: | Ligne 203: | ||
<code user>/home/hypathie/.pyenv/shims/python</code> | <code user>/home/hypathie/.pyenv/shims/python</code> | ||
- | - Pour changer de version de python pour l'environnement virtuel, on fait la même chose avec la version | + | - Pour que le shell de pyenv utilise la version 3 (installée aussi plutôt) |
<code user>pyenv shell 3.4.3</code> | <code user>pyenv shell 3.4.3</code> | ||
<code user>python --version</code> | <code user>python --version</code> | ||
<code retour>Python 3.4.3</code> | <code retour>Python 3.4.3</code> | ||
- | * Utiliser virtualenv avec pyenv | + | ====Utiliser virtualenv avec pyenv==== |
+ | |||
+ | * Configuration du système pour utiliser virtualenv avec pyenv | ||
<code user>git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv</code> | <code user>git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv</code> | ||
<code user>echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc</code> | <code user>echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc</code> | ||
<code user>exec $SHELL</code> | <code user>exec $SHELL</code> | ||
- | * Créer un répertoire pour django | + | * Créer un répertoire où l'on pourra installer django pour python 3 |
- | <code user>mkdir MonPython3Django</code> | + | |
- | <code user>cd MonPython3Django/</code> | + | <code user>mkdir ProjetsDjangoPy3 && cd ProjetsDjangoPy3</code> |
<code user>pyenv shell 3.4.3</code> | <code user>pyenv shell 3.4.3</code> | ||
<code user>python --version</code> | <code user>python --version</code> | ||
Ligne 288: | Ligne 228: | ||
</code> | </code> | ||
<code user>pyenv activate 1.8-3.4</code> | <code user>pyenv activate 1.8-3.4</code> | ||
+ | |||
+ | ====Installer Django ==== | ||
+ | |||
<code user>pip install django</code> | <code user>pip install django</code> | ||
<code retour>You are using pip version 6.0.8, however version 7.1.2 is available. | <code retour>You are using pip version 6.0.8, however version 7.1.2 is available. | ||
Ligne 299: | Ligne 242: | ||
(1.8-3.4) hypathie@debian:~/MonPython3Django$ pip install django</code> | (1.8-3.4) hypathie@debian:~/MonPython3Django$ pip install django</code> | ||
Pas d'erreur cette fois 8-) | Pas d'erreur cette fois 8-) | ||
+ | |||
+ | * Pour vérifier les versions | ||
+ | |||
<code user>django-admin.py --version</code> | <code user>django-admin.py --version</code> | ||
<code retour>1.9</code> | <code retour>1.9</code> | ||
- | <code user>pyenv deactivate</code> | ||
+ | <code user>python --version</code> | ||
+ | <code user>Python 3.4.3</code> | ||
- | <code user></code> | + | Avec la commande recommandée par la doc officielle de django: |
- | <code user></code> | + | |
- | + | ||
- | + | ||
- | ==== Installer Django dans un environnement python virtuel ==== | + | |
- | + | ||
- | === On créer un répertoire=== | + | |
- | + | ||
- | <code user>virtualenv MonPy3Django -p /usr/bin/python3.4</code> | + | |
- | + | ||
- | Cela a crée une dossier nommé "PremiersProjetsDjango" dans le répertoire de l'utilisateur courant | + | |
- | + | ||
- | + | ||
- | ===on se place dans le dossier "PremiersProjetsDjango"=== | + | |
- | + | ||
- | <code user>cd ~/MonPy3Django/ && ls</code> | + | |
- | + | ||
- | Il contient trois dossiers permettant d'utiliser python : | + | |
- | + | ||
- | <code retour>bin include lib</code> | + | |
- | + | ||
- | Les outils sont dans bin/ | + | |
- | + | ||
- | <code user>tree bin/</code> | + | |
- | <code retour> | + | |
- | bin/ | + | |
- | ├── activate | + | |
- | ├── activate.csh | + | |
- | ├── activate.fish | + | |
- | ├── activate_this.py | + | |
- | ├── easy_install | + | |
- | ├── easy_install-3.4 | + | |
- | ├── pip | + | |
- | ├── pip3 | + | |
- | ├── pip3.4 | + | |
- | ├── python -> python3.4 | + | |
- | ├── python3 -> python3.4 | + | |
- | └── python3.4 | + | |
- | </code> | + | |
- | + | ||
- | On voit que tout l'environnement pointe vers python3.4 | + | |
- | + | ||
- | === On active l'environnement virtuel python=== | + | |
- | + | ||
- | + | ||
- | + | ||
- | <note tip> | + | |
- | **Pour sortir de l'environnement virtuel python :** | + | |
- | + | ||
- | <code user>deactivate</code> | + | |
- | </note> | + | |
- | + | ||
- | === On installe Django === | + | |
- | + | ||
- | <code user>pip3 install django</code> | + | |
- | + | ||
- | * Et pour vérifier tout en prenant connaissance de la version de django installée : | + | |
- | + | ||
- | (selon la méthode proposer par la doc officielle de Django : https://docs.djangoproject.com/fr/1.8/intro/tutorial01/) | + | |
<code user>python3 -c "import django; print(django.get_version())"</code> | <code user>python3 -c "import django; print(django.get_version())"</code> | ||
- | <code retour>1.9</code> | ||
- | <note tip> | + | aussi bien que : |
- | * **Tout est bien clair ? ** | + | |
- | <code user>deactivate</code> | + | <code user>python -c "import django; print(django.get_version())"</code> |
- | <code user>python3 -c "import django; print(django.get_version())"</code> | + | |
- | <code retour> | + | |
- | Traceback (most recent call last): | + | |
- | File "<string>", line 1, in <module> | + | |
- | ImportError: No module named 'django' | + | |
- | </code> | + | |
- | |||
- | <code user>source bin/activate</code> | ||
- | <code user>python3 -c "import django; print(django.get_version())"</code> | ||
<code retour>1.9</code> | <code retour>1.9</code> | ||
+ | 8-) | ||
- | * Pour avoir la liste de tous les modules python installés dans son environnement : | + | <note tip> |
+ | * Pour sortir de pyenv : | ||
- | <code user>pip freeze</code> | + | <code user>pyenv deactivate</code> |
- | <code retour> | + | |
- | Django==1.9 | + | |
- | wheel==0.24.0 | + | |
- | </code> | + | |
- | + | ||
- | * **Manuel officiel de pip** : https://pip.pypa.io/en/stable/user_guide/ | + | |
</note> | </note> | ||
- | ==== Création d'un premier projet Django==== | + | ====Créer un projet django sous python 3==== |
<note> | <note> | ||
- | **Un petit rappel ?** | + | Si l'on reprend le wiki ici ! Ou qu'on a lancé la commande ''pyenv deactivate'' |
- | - On a crée un dossier par exemple sur son bureau pour l'environnement virtuel python "virtualenv PremiersProjetsDjango"; | + | * On va dans son répertoire configuré pour python 3 dans lequel est installé django |
- | - Dans ce dossier on a activé python "source bin/activate" ; | + | <code user>cd ~/ProjetsDjangoPy3/</code> |
- | - On a installé Django. | + | <code user>pyenv activate 1.8-3.4</code> |
- | + | ||
- | À partir de là pour créer un projet Django, il faut aller dans le dossier de l'environnement virtuel python et activer python : | + | |
- | + | ||
- | <code user>cd ~/Bureau/PremiersProjetsDjango/</code> | + | |
- | + | ||
- | <code user>source bin/activate</code> | + | |
- | + | ||
- | <code user>python3 -c "import django; print(django.get_version())"</code> | + | |
</note> | </note> | ||
- | * Le contenu de son dossier avant création d'un nouveau projet: | + | * Pour créer le projet Django nommé par exemple "premierProjet" |
- | + | ||
- | <code user>pwd</code> | + | |
- | <code retour>/home/hypathie/Bureau/PremiersProjetsDjango</code> | + | |
- | + | ||
- | <code user>ls</code> | + | |
- | <code retour>bin include lib</code> | + | |
- | + | ||
- | * Pour créer un nouveau projet nommé par exemple "premierProjet": | + | |
<code user>django-admin.py startproject premierProjet</code> | <code user>django-admin.py startproject premierProjet</code> | ||
- | <code user>ls</code> | ||
- | <code retour>bin include lib premierProjet</code> | ||
- | |||
- | * Architecture du dossier premierProjet : | ||
- | |||
- | <code user>cd premierProjet/</code> | ||
- | <code retour>manage.py premierProjet</code> | ||
- | |||
- | <code user>cd premierProjet/</code> | ||
- | <code retour>__init__.py settings.py urls.py wsgi.py</code> | ||
- | |||
- | * Avec la commande tree : | ||
<code user>tree premierProjet/</code> | <code user>tree premierProjet/</code> | ||
Ligne 450: | Ligne 296: | ||
</code> | </code> | ||
- | **Ces fichiers sont :** | + | <note tip> |
+ | Et voilà, partir de là, on retombe sur nos pattes et l'on peut suivre simplement le premier projet de la doc officielle de django alors que notre environnement virtuel est sous python 3 ! \\ | ||
- | * __premierProjet/__ c'est le répertoire racine qui est le contenant du projet nouvellement créé. | + | https://docs.djangoproject.com/fr/1.8/intro/tutorial01/ \\ |
- | * __manage.py__ est un utilitaire en ligne de commande qui vous permet d’interagir avec ce projet Django de différentes façons. Vous trouverez toutes les informations nécessaires sur manage.py dans django-admin et manage.py. | + | que je vais résumer dans ce qui suit ! |
- | * Le sous-répertoire __premierProjet/__ correspond au paquet Python effectif de votre projet. C’est le nom du paquet Python que vous devrez utiliser pour importer ce qu’il contient. | + | </note> |
- | + | ||
- | * __premierProjet/__init__.py__ : un fichier vide qui indique à Python que ce répertoire doit être considéré comme un paquet (lisez informations sur les paquets (en) dans la documentation officielle de Python si vous êtes débutant avec ce langage). | + | |
- | + | ||
- | * __premierProjet/settings.py__ : réglages et configuration de ce projet Django. Les réglages de Django vous apprendra tout sur le fonctionnement des réglages. | + | |
- | + | ||
- | * __premierProjet/urls.py__ : les déclarations des URL de ce projet Django, une sorte de « table des matières » de votre site Django. Vous pouvez en lire plus sur les URL dans Distribution des URL. | + | |
- | + | ||
- | * __premierProjet/wsgi.py__ : un point d’entrée pour les serveurs Web compatibles WSGI pour déployer votre projet. Voir Comment déployer avec WSGI pour plus de détails. | + | |
- | Pour plus de détails voir la doc officielle de Django : https://docs.djangoproject.com/fr/1.8/intro/tutorial01/ | ||
=== Premier test=== | === Premier test=== | ||
Ligne 474: | Ligne 312: | ||
<code user>cd ~/Bureau/PremiersProjetsDjango/premierProjet/</code> | <code user>cd ~/Bureau/PremiersProjetsDjango/premierProjet/</code> | ||
- | <code user>python3 manage.py runserver</code> | + | * On met à jour la base de donnée : |
- | <code retour> | + | <code user>python manage.py migrate</code> |
- | Performing system checks... | + | |
- | System check identified no issues (0 silenced). | + | <code user>python manage.py runserver</code> |
- | You have unapplied migrations; your app may not work properly until they are applied. | ||
- | Run 'python manage.py migrate' to apply them. | ||
- | |||
- | December 03, 2015 - 12:43:53 | ||
- | Django version 1.9, using settings 'premierProjet.settings' | ||
- | Starting development server at http://127.0.0.1:8000/ | ||
- | Quit the server with CONTROL-C. | ||
- | </code> | ||
- | |||
- | <note> | ||
- | Rien de grave dans ce retour. | ||
- | Django prévient qu'aucune base de données n'a été migrée. | ||
- | Ce n'est pas important pour ce premier test. | ||
- | </note> | ||
* Depuis son navigateur on entre dans la barre url: "http://localhost:8000/" | * Depuis son navigateur on entre dans la barre url: "http://localhost:8000/" | ||
Ligne 502: | Ligne 325: | ||
{{http://pix.toile-libre.org/upload/img/1449147148.png}}\\ | {{http://pix.toile-libre.org/upload/img/1449147148.png}}\\ | ||
- | ====Premier projet avec la base de données sqlite3==== | + | <note tip> |
+ | Notre avantage, on aurrait pu aussi bien lancer à la place des deux commandes précédentes : | ||
+ | |||
+ | <code user>python3 manage.py migrate</code> | ||
+ | |||
+ | <code user>python3 manage.py runserver</code> | ||
+ | |||
+ | 8-) | ||
+ | |||
+ | </note> | ||
+ | =====Premier projet avec la base de données sqlite3===== | ||
* Par défaut, Django utilise la base de donnée sqlite3 : | * Par défaut, Django utilise la base de donnée sqlite3 : |