212 lines
6.0 KiB
Plaintext
212 lines
6.0 KiB
Plaintext
.. default-role:: literal
|
|
|
|
Mettre en place son environnement de travail
|
|
=============================================
|
|
|
|
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
|
|
|
|
.. 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
|
|
|
|
|
|
|
|
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).
|
|
|
|
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()
|