221 lines
6.1 KiB
Plaintext
221 lines
6.1 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/
|
||
|
|
||
|
|
||
|
pep8_
|
||
|
|
||
|
.. _pep8: https://pep8.org/
|
||
|
|
||
|
|
||
|
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
|