formations/python/python3/fr/_build/html/settings.html

289 lines
17 KiB
HTML
Raw Normal View History

2018-08-21 10:25:44 +02:00
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mettre en place son environnement de travail &#8212; Documentation Formation Python 1</title>
<link rel="stylesheet" href="_static/classic.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Recherche" href="search.html" />
<link rel="next" title="Typage, types de base" href="type.html" />
<link rel="prev" title="Prise en main" href="getting-started.html" />
</head>
<body>
<div style="background-color: white; text-align: left; padding: 10px 10px 15px 15px">
<table><tr><td>
<img src="_static/sphinx.png" alt="logo" />
</td><td>
<h1>&nbsp; &nbsp; Programmation python</h1>
</td></tr></table>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="Index général"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Index des modules Python"
>modules</a> |</li>
<li class="right" >
<a href="type.html" title="Typage, types de base"
accesskey="N">suivant</a> |</li>
<li class="right" >
<a href="getting-started.html" title="Prise en main"
accesskey="P">précédent</a> |</li>
<a href="index.html">Programmation python </a> &raquo;
</ul>
</div>
<p>&nbsp;</p>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="mettre-en-place-son-environnement-de-travail">
<h1>Mettre en place son environnement de travail<a class="headerlink" href="#mettre-en-place-son-environnement-de-travail" title="Lien permanent vers ce titre"></a></h1>
<div class="section" id="les-editeurs-pour-python">
<h2>Les éditeurs pour python<a class="headerlink" href="#les-editeurs-pour-python" title="Lien permanent vers ce titre"></a></h2>
<p>Nimporte quel éditeur qui respecte les coding standards du pep8 convient :</p>
<p><a class="reference external" href="https://www.python.org/dev/peps/pep-0008/">https://www.python.org/dev/peps/pep-0008/</a></p>
<p><a class="reference external" href="https://pep8.org/">pep8</a></p>
<p>dune manière générale, de base un éditeur spartiate peut convenir du moment
que lintentation de 4 espaces est respectée et que les tablulations sont
remplacées par des espaces, car le plus important en python cest lindentation,
et le fait de bien voir ou est le règlage de lencodage (ça doit être en <code class="docutils literal"><span class="pre">utf-8</span></code>)
Pour voir si ton éditeur est bien configuré, tu prends nimporte quel fichier python
que tu as créé, puis tu faire un</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">pep8</span> <span class="o">&lt;</span><span class="n">mon_fichier</span><span class="o">.</span><span class="n">py</span><span class="o">&gt;</span>
</pre></div>
</div>
<p>et <code class="docutils literal"><span class="pre">pep</span></code> va dire ce qui ne va pas en termes de syntaxe.</p>
</div>
<div class="section" id="idle">
<h2>IDLE<a class="headerlink" href="#idle" title="Lien permanent vers ce titre"></a></h2>
<p><a class="reference external" href="https://docs.python.org/2/library/idle.html">https://docs.python.org/2/library/idle.html</a></p>
<p>Pour information, IDLE est un éditeur intégré (dans la lib standard de python)
mais je te le déconseille (trop spartiate).</p>
<p>un framework de développement intégré : <a class="reference internal" href="#term-idle"><span class="xref std std-term">IDLE</span></a></p>
<dl class="glossary docutils">
<dt id="term-idle">IDLE</dt>
<dd><a class="reference external" href="http://docs.python.org/2/library/idle.html">IDLE</a> est un IDE (environnement de développement intégré) mis à disposition
dans la <a class="reference internal" href="#term-librairie-standard"><span class="xref std std-term">librairie standard</span></a> de python</dd>
</dl>
</div>
<div class="section" id="nano">
<h2>nano<a class="headerlink" href="#nano" title="Lien permanent vers ce titre"></a></h2>
<p>pour lexemple, avec <strong>nano</strong>, voici comment faire une config qui permette
de coder en python. On configure nano avec le <code class="docutils literal"><span class="pre">.nanorc</span></code></p>
<p>Exemple de <code class="docutils literal"><span class="pre">.nanorc</span></code></p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># replace les tabulations par 4 espaces</span>
<span class="nb">set</span> <span class="n">tabsize</span> <span class="mi">4</span>
<span class="nb">set</span> <span class="n">tabstospaces</span>
<span class="c1"># indente automatiquement</span>
<span class="nb">set</span> <span class="n">autoindent</span>
<span class="c1"># la touche home renvoie en debut de code</span>
<span class="nb">set</span> <span class="n">smarthome</span>
<span class="c1"># ne met pas de retour chariot a la fin d&#39;une ligne</span>
<span class="c1"># si elle depasse la largeur du terminal</span>
<span class="nb">set</span> <span class="n">nowrap</span>
<span class="n">unset</span> <span class="n">softwrap</span>
<span class="c1"># chargement de plusieur fichiers</span>
<span class="nb">set</span> <span class="n">multibuffer</span>
<span class="c1"># coloration syntaxique</span>
<span class="c1">## Python</span>
<span class="c1">#include &quot;/usr/share/nano/python.nanorc&quot;</span>
</pre></div>
</div>
</div>
<div class="section" id="gedit">
<h2>Gedit<a class="headerlink" href="#gedit" title="Lien permanent vers ce titre"></a></h2>
<p>Gedit cest très bien pour coder en python, mais de base cest pas sur un serveur,
il faut pouvoir être en mode graphique.
Il faut règler lindentation à 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.</p>
<p>Je lutilise souvent mais il faut des plugins avec
genre ceux-ci (si tu es sur ubuntu):</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">gedit</span><span class="o">-</span><span class="n">plugins</span>
</pre></div>
</div>
<p>dans ce paquet par exemple, loutil pour commenter-décommenter le code est intéressant
(sélection dun paragraphe, puis Ctrl-M)
tu peux régler après la complétion des parenthèses, etc.</p>
<p>il y a aussi le paquet developer plugins :</p>
<p><a class="reference external" href="https://apps.ubuntu.com/cat/applications/gedit-developer-plugins/">https://apps.ubuntu.com/cat/applications/gedit-developer-plugins/</a></p>
<p>Après avec les plugins gedit commence à bien tenir la route.</p>
</div>
<div class="section" id="vi">
<h2>Vi<a class="headerlink" href="#vi" title="Lien permanent vers ce titre"></a></h2>
<p>Toujours la même problématiques (espaces, tablulation…)
Donc voici une partie de <code class="docutils literal"><span class="pre">.vimrc</span></code> qui le fait:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="s2">&quot;Pour le collage&quot;</span>
<span class="nb">set</span> <span class="n">pt</span><span class="o">=&lt;</span><span class="n">F5</span><span class="o">&gt;</span>
<span class="nb">set</span> <span class="n">vb</span> <span class="n">t_vb</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="nb">set</span> <span class="n">shiftwidth</span><span class="o">=</span><span class="mi">4</span>
<span class="nb">set</span> <span class="n">expandtab</span>
<span class="nb">set</span> <span class="n">ts</span><span class="o">=</span><span class="mi">4</span>
<span class="nb">set</span> <span class="n">sw</span><span class="o">=</span><span class="mi">4</span>
<span class="n">syntax</span> <span class="n">on</span>
<span class="n">filetype</span> <span class="n">indent</span> <span class="n">on</span>
<span class="n">filetype</span> <span class="n">plugin</span> <span class="n">on</span>
<span class="nb">set</span> <span class="n">autoindent</span>
<span class="nb">set</span> <span class="n">hlsearch</span> <span class="s2">&quot; Surligne les resultats de recherche</span>
<span class="nb">set</span> <span class="n">wrap</span> <span class="s2">&quot; Pas de retour a la ligne auto (affichage)</span>
<span class="nb">set</span> <span class="n">showmatch</span> <span class="s2">&quot; Affiche parenthese correspondante</span>
<span class="nb">set</span> <span class="n">softtabstop</span><span class="o">=</span><span class="mi">4</span> <span class="s2">&quot; Largeur d&#39;une tabulation</span>
<span class="s2">&quot;set fdm=indent &quot;</span> <span class="n">Repli</span> <span class="n">selon</span> <span class="n">l</span><span class="s1">&#39;indentation</span>
</pre></div>
</div>
<p>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.</p>
<p>Dune 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.</p>
</div>
<div class="section" id="configurer-son-editeur-resume">
<h2>configurer son éditeur : résumé<a class="headerlink" href="#configurer-son-editeur-resume" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>les fichiers sources ont lextension <code class="docutils literal"><span class="pre">.py</span></code></li>
<li>une instruction par ligne</li>
<li>les blocs sont marqués par lindentation (utilser 4 espaces), règler
léditeur pour transformer les tabulations en espaces</li>
</ul>
</div>
<div class="section" id="configurer-son-prompt-python">
<h2>configurer son prompt python<a class="headerlink" href="#configurer-son-prompt-python" title="Lien permanent vers ce titre"></a></h2>
<dl class="envvar">
<dt id="envvar-PYTHONPATH">
<code class="descname">PYTHONPATH</code><a class="headerlink" href="#envvar-PYTHONPATH" title="Lien permanent vers cette définition"></a></dt>
<dd><p>pointe par défaut sur le répertoire courant, il est possible dajouter
un path</p>
</dd></dl>
<p>à mettre dans votre <code class="docutils literal"><span class="pre">.bashrc</span></code> :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span>export PYTHONPATH:`pwd`
export PYTHONPATH=$PYTHONPATH:&#39;/usr/share&#39;:&#39;/toto/titi/tata&#39;
alias pyenv=&#39;export PYTHONPATH=`pwd`:$PYTHONPATH&#39;
export PYTHONSTARTUP=&#39;/home/gwen/.pystartup&#39;
</pre></div>
</div>
<dl class="envvar">
<dt id="envvar-PYTHONSTARTUP">
<code class="descname">PYTHONSTARTUP</code><a class="headerlink" href="#envvar-PYTHONSTARTUP" title="Lien permanent vers cette définition"></a></dt>
<dd><p>les trucs à mettre dans vos pytstartups (comme dans vos .bashrc)</p>
<ul class="simple">
<li>autocomplétion</li>
<li>affichage de lhistorique</li>
</ul>
</dd></dl>
<p>exemple de <code class="docutils literal"><span class="pre">.pystartup</span></code></p>
<p>à télécharger ici : <a class="reference download internal" href="_downloads/pystartup" download=""><code class="xref download docutils literal"><span class="pre">snippets/pystartup</span></code></a></p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># Store the file in ~/.pystartup, and set an environment variable to point to</span>
<span class="c1"># it, e.g. &quot;export PYTHONSTARTUP=/max/home/itamar/.pystartup&quot; in bash.</span>
<span class="c1">#</span>
<span class="c1"># Note that PYTHONSTARTUP does *not* expand &quot;~&quot;, so you have to put in the full</span>
<span class="c1"># path to your home directory.</span>
<span class="kn">import</span> <span class="nn">rlcompleter</span>
<span class="kn">import</span> <span class="nn">readline</span>
<span class="n">readline</span><span class="o">.</span><span class="n">parse_and_bind</span><span class="p">(</span><span class="s2">&quot;tab: complete&quot;</span><span class="p">)</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="n">histfile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">&quot;HOME&quot;</span><span class="p">],</span> <span class="s2">&quot;.pyhist&quot;</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">readline</span><span class="o">.</span><span class="n">read_history_file</span><span class="p">(</span><span class="n">histfile</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
<span class="k">pass</span>
<span class="kn">import</span> <span class="nn">atexit</span>
<span class="n">atexit</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">readline</span><span class="o">.</span><span class="n">write_history_file</span><span class="p">,</span> <span class="n">histfile</span><span class="p">)</span>
<span class="k">del</span> <span class="n">os</span><span class="p">,</span> <span class="n">histfile</span>
<span class="c1"># enhanced completion</span>
<span class="c1">#import rlcompleter2</span>
<span class="c1">#rlcompleter2.setup()</span>
</pre></div>
</div>
</div>
<div class="section" id="consulter-la-librairie-standard">
<h2>Consulter la librairie standard<a class="headerlink" href="#consulter-la-librairie-standard" title="Lien permanent vers ce titre"></a></h2>
<dl class="glossary docutils">
<dt id="term-librairie-standard">librairie standard</dt>
<dd>Une des règles de base de python est quil existe certainement une manière
conseillé de faire une tâche en python. Le premier réflexe est daller
voir dans la <a class="reference external" href="http://docs.python.org/2.7/library/index.html">librairie standard</a></dd>
</dl>
<p>Premier réflexe : la doc en ligne ou bien installée sur votre disque dur.</p>
<p>la page daccueil de la doc officielle python :</p>
<img alt="_images/DocPython.png" src="_images/DocPython.png" />
<p>et surtout, une fois la librairie standard abordée, la page dindex des
modules :</p>
<img alt="_images/ModuleIndex.png" src="_images/ModuleIndex.png" />
</div>
</div>
</div>
</div>
</div>
<div style="background-color: white; text-align: left; padding: 10px 10px 15px 15px">
<a href="search.html"> Recherche</a> | &nbsp;
<!-- a href="genindex.html"> Genindex</a-->
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="Index général"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Index des modules Python"
>modules</a> |</li>
<li class="right" >
<a href="type.html" title="Typage, types de base"
>suivant</a> |</li>
<li class="right" >
<a href="getting-started.html" title="Prise en main"
>précédent</a> |</li>
<a href="index.html">Programmation python </a> &raquo;
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2015, cadoles (www.cadoles.com).
Créé avec <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.7.
</div>
</body>
</html>