formations/python/formation/settings.txt
2015-05-01 10:32:46 +02:00

215 lines
6.0 KiB
Plaintext

.. default-role:: literal
Mettre en place son environnement de travail
=============================================
Les éditeurs pour python
-----------------------------
N'importe quel éditeur qui respecte les coding standards du pep8 convient :
https://www.python.org/dev/peps/pep-0008/
d'une manière générale, de base un éditeur spartiate peut convenir du moment
que l'intentation de 4 espaces est respectée et que les tablulations sont
remplacées par des espaces, car le plus important en python c'est l'indentation,
et le fait de bien voir ou est le règlage de l'encodage (ça doit être en ``utf-8``)
Pour voir si ton éditeur est bien configuré, tu prends n'importe quel fichier python
que tu as créé, puis tu faire un ::
pep8 <mon_fichier.py>
et `pep` va dire ce qui ne va pas en termes de syntaxe.
IDLE
------
https://docs.python.org/2/library/idle.html
Pour information, IDLE est un éditeur intégré (dans la lib standard de python)
mais je te le déconseille (trop spartiate).
un framework de développement intégré : :term:`IDLE`
.. glossary::
IDLE
IDLE_ est un IDE (environnement de développement intégré) mis à disposition
dans la :term:`librairie standard` de python
.. _IDLE: http://docs.python.org/2/library/idle.html
nano
--------
pour l'exemple, avec **nano**, voici comment faire une config qui permette
de coder en python. On configure nano avec le ``.nanorc``
Exemple de ``.nanorc`` ::
# replace les tabulations par 4 espaces
set tabsize 4
set tabstospaces
# indente automatiquement
set autoindent
# la touche home renvoie en debut de code
set smarthome
# ne met pas de retour chariot a la fin d'une ligne
# si elle depasse la largeur du terminal
set nowrap
unset softwrap
# chargement de plusieur fichiers
set multibuffer
# coloration syntaxique
## Python
#include "/usr/share/nano/python.nanorc"
Gedit
---------
Gedit c'est très bien pour coder en python, mais de base c'est pas sur un serveur,
il faut pouvoir être en mode graphique.
Il faut règler l'indentation à 4 espaces pour respecter le pep8.
Et règler le replacement des tablulations par des espaces.
Mais surtout, très vite il faut installer les paquets additionnels, notamment
pour que gedit supprime les espaces en fin de ligne par exemple.
Je l'utilise souvent mais il faut des plugins avec
genre ceux-ci (si tu es sur ubuntu)::
apt-get install gedit-plugins
dans ce paquet par exemple, l'outil pour commenter-décommenter le code est intéressant
(sélection d'un paragraphe, puis Ctrl-M)
tu peux régler après la complétion des parenthèses, etc.
il y a aussi le paquet developer plugins :
https://apps.ubuntu.com/cat/applications/gedit-developer-plugins/
Après avec les plugins gedit commence à bien tenir la route.
Vi
----------
Toujours la même problématiques (espaces, tablulation...)
Donc voici une partie de ``.vimrc`` qui le fait::
"Pour le collage"
set pt=<F5>
set vb t_vb="
set shiftwidth=4
set expandtab
set ts=4
set sw=4
syntax on
filetype indent on
filetype plugin on
set autoindent
set hlsearch " Surligne les resultats de recherche
set wrap " Pas de retour a la ligne auto (affichage)
set showmatch " Affiche parenthese correspondante
set softtabstop=4 " Largeur d'une tabulation
"set fdm=indent " Repli selon l'indentation
maintenant après il y a un python-mode assez avancé qui permet de faire pas mal de choses.
(valider avec la syntaxe avec pylint, valider le pep8...)
Mais il faut une config plus avancée.
D'une manière générale, il y a la possibilité de valider avec des outils externes (pylint, pychecker, pep8...) et il y a aussi la possibilité de valider tout ça dans un éditeur.
configurer son éditeur : résumé
-----------------------------------
- les fichiers sources ont l'extension `.py`
- une instruction par ligne
- les blocs sont marqués par l'indentation (utilser 4 espaces), règler
l'éditeur pour transformer les tabulations en espaces
configurer son prompt python
-------------------------------
.. envvar:: PYTHONPATH
pointe par défaut sur le répertoire courant, il est possible d'ajouter
un path
à mettre dans votre `.bashrc` :
::
export PYTHONPATH:`pwd`
export PYTHONPATH=$PYTHONPATH:'/usr/share':'/toto/titi/tata'
alias pyenv='export PYTHONPATH=`pwd`:$PYTHONPATH'
export PYTHONSTARTUP='/home/gwen/.pystartup'
.. envvar:: PYTHONSTARTUP
les trucs à mettre dans vos pytstartups (comme dans vos .bashrc)
- autocomplétion
- affichage de l'historique
exemple de `.pystartup`
à télécharger ici : :download:`snippets/pystartup`
::
# Store the file in ~/.pystartup, and set an environment variable to point to
# it, e.g. "export PYTHONSTARTUP=/max/home/itamar/.pystartup" in bash.
#
# Note that PYTHONSTARTUP does *not* expand "~", so you have to put in the full
# path to your home directory.
import rlcompleter
import readline
readline.parse_and_bind("tab: complete")
import os
histfile = os.path.join(os.environ["HOME"], ".pyhist")
try:
readline.read_history_file(histfile)
except IOError:
pass
import atexit
atexit.register(readline.write_history_file, histfile)
del os, histfile
# enhanced completion
#import rlcompleter2
#rlcompleter2.setup()
Consulter la librairie standard
-------------------------------------
.. glossary::
librairie standard
Une des règles de base de python est qu'il existe certainement une manière
conseillé de faire une tâche en python. Le premier réflexe est d'aller
voir dans la `librairie standard`_
.. _`librairie standard`: http://docs.python.org/2.7/library/index.html
Premier réflexe : la doc en ligne ou bien installée sur votre disque dur.
la page d'accueil de la doc officielle python :
.. image:: images/DocPython.png
et surtout, une fois la librairie standard abordée, la page d'index des
modules :
.. image:: images/ModuleIndex.png