Tutoriel : prise en main

Je suppose que vous êtes capables de télécharger les fichiers de l'Internet, d'utiliser les logiciels de compression/décompression, et de chercher les informations via Google. En cas de problèmes, demandez de l'aide, mais posez des questions concrètes. Je reste à la disposition de tous qui s'adressent à moi, pas forcément mon groupe.

Dans nos salles de machines nous travaillons sous Linux, mais sur vos ordinateurs personnels vous pouvez avoir d'autres systèmes... Personnellement j'utilise assez fréquement Windows, car il est plus facile de tester des nouveaux modules avec. L'environnement Linux chez nous est assez stable, et les mises à jour ne sont pas fréquentes !


Installation de Python

Le site officiel du langage est ici : http://www.python.org/. Ici vous trouverez les versions les plus récentes du compilateur et des librairies de support. C'est ici où d'autres distributeurs cherchent les sources et les corrections.

Ceci dit, ceci n'est pas forcément la meilleure solution pour vous, car d'autres distributions intègrent dans les paquetages d'installation plusieurs extra librairies, dont nous aurons besoin.

N'oubliez pas que vous aurez Python en L2, un semestre de programmation objet, et que Python est utilisé dans d'autres enseignements (options, par ex. le traitement des langues, ou des images), donc il est dans votre intérêt avoir un environnement Python personnel riche et à jour.

Voici donc quelques alternatives, où je me concentre sur les solutions "académiques", c'est-à-dire loin des paquetages dédiés aux entreprises, à la gestion commerciale, etc. (même si certains, par ex. Anaconda, soient aussi exploités dans un tel contexte). Bien sûr, tout est gratuit, sauf des ajouts spécifiés comme commerciaux, dont vous n'aurez jamais (ici) besoin. Avertissement : n'installez jamais sur un ordinateur plusieurs versions de Python. Ceci est faisable, mais you are asking for trouble! Tôt ou tard, un logiciel qui vérifie automatiquement les applications et les modules installés, chargera à votre insu la mauvaise version...

Installez seulement la version récente, stable : 3.4. Dans les salles de machines la version 2.7 traîne encore, car quelques collègues utilisent des librairies obsolètes, mais ceci n'est pas bien. Pour mon groupe : je n'accepterai pas les devoirs en Python 2, je ne les corrigerai pas.

Voici quelques exemples d'implémentation/distribution qui peuvent vous être utiles dans le contexte académique. Installez ce que vous voulez, vous pourrez changer d'avis plus tard.

Ceci n'épuise pas la collection. Il en existent d'autres, comme Active Python, etc. et le choix est surtout une question de ... choix. Parfois on constate que quelques librairies de support sont mis à jour avec du retard, ceci peut être gênant ou non.


Alors, ... quelle version de Python?

Répétons : Nous travaillerons avec la version Python 3, ceci est sûr.

La réponse plus détaillée est (aujourd'hui) : 3.4. C'est la version stable, avec un bon support de paquetages supplémentaires. Bien sûr, la réponse à la question : 32 ou 64 bits dépend de votre ordinateur. Attention, quelques logiciels peuvent avoir installé une autre version de Python ! En particulier, actuellement les versions stables de Linux viennent d'office avec Python 2.7 préinstallé. Dans ce cas, malgré mon avertissement, il ne le faut pas éliminer (ni avant ni après l'installation du Python 3), car il est utilisé par quelques scripts du support système !

Vous aurez alors les commandes python, qui lancera la version 2.7, et, si vous installez correctement la nouvelle version, vous aurez probablement la commande python3 qui lance la version plus récente. Vous aurez aussi idle et idle3.

Si vous constatez des coquilles dans votre système, contactez-moi.


Support de développement

Il s'agit des éditeurs de code, intégrés (ou pas) avec le compilateur Python, et autres logiciels accompagnant. En principe on peut utiliser n'importe quel éditeur de texte, et un terminal système standard. Cependant, parfois il est utile d'exploiter les dispositifs spécifiques à Python, ou des éditeurs qui coopèrent avec le compilateur, qui peuvent être lancés par une commande Python, et qui peuvent demander l'exécution du fichier rédigé.

D'autres logiciels genre éditeurs, mailers, etc., peuvent aussi être utiles, mais ceci est hors de portée de ce tutoriel. Ceci dit, si vous avez des questions, adressez-moi un mail. Pour ceux qui sont angoissés par l'embarras du choix, se posent la question : "alors QUOI", et veulent une seule proposition, je deux conseils.

A. Restez cool, installez ce que vous voulez, si après des discussions avec vos amis, et vos expériences, vous changez d'avis, aucun problème, vous ne perdrez rien.
B. Installez Anaconda.

Quel éditeur?... Françoise utilisera probablement Idle. Moi : Spyder. Les autres collègues : aucune idée... Personnellement je n'aime pas tellement Idle, car il gère la mémoire très mal, ce qui ralentit des programmes. de plus, l'interface est basée sur Tkinter, ce qui peut produire des ennuis au niveau des threads (programmation parallèle, graphisme), mais ceci concerne peu les L1. L'avantage principal de Idle est qu'il est inclus d'office dans toute distribution de Python.

Ceci dit, vous pourrez utiliser n'importe quel éditeur adapté au codage des programmes ! (Regardez cette liste).


Librairies / modules supplémentaires

Ici il s'agit de modules Python permettant de faire du graphisme de qualité, les jeux, l'accès aux bases de données, etc., mais aussi de quelques utilitaires facilitant l'organisation de votre système Python.

D'abord : installez pip.

Python est distribué avec des modules (setuptools, distutils) qui facilitent l'installation des nouveaux paquetages, mais pip rend le processus très simple, il se charge de l'importer la version correcte de l'Internet. Si vous trouvez un excellent paquetage, par ex. PyFabuleux quelque part, vous lancez chez vous : pip install PyFabuleux et c'est tout. Il a un concurrent : easy_install normalement attaché à setuptools, mais pip semble être plus populaire.

Attention, avant de tenter l'installation du pip, vérifiez sa présence, il peut être déjà installé avec votre distribution ! Pour ceux qui ont installé Anaconda : conda remplace pip dans 80% des cas, et intègre mieux les paquetages. Cependant, parfois il faut installer des choses qui n'ont pas encore été incoroporés dans Anaconda, alors pip sera utile.

Bibliothèques "scientifiques"

L'essentielle est le paquetage numpy permettant de travailler de manière commode et efficace sur les grands tableaux, sans gaspiller le temps dans les boucles interprétées. Si vous installez une des distributions recommandées ci-dessus, vous l'aurez. De toute façon, lisez la documentation. Pour des tâches plus spécifiques, numpy coopère avec scipy : je mentionne son existence pour le futur. Bien sûr, Anaconda et Enthough contiennent ces paquetages, ainsi que les outils graphiques, comme Matplotlib.

Graphisme et images

Python est distribué d'office avec le module tkinter : un paquetage - "passerelle" vers la couche de programmation Tcl/Tk permettant l'ouverture des fenêtres, traçage des formes, interaction avec la souris, etc. Tkinter est une librairie peu commode et pas très efficace, son avantage principal est qu'il est "standard", toujours présent, et pour cette raison il était (aussi chez nous) souvent enseigné avec Python. Pour vous, son handicap principal est : c'est une couche de bas niveau, il faut écrire plusieurs lignes pour faire des choses très simples. Il est parfois décrit comme "facile et simple", et donc adapté aux débutants qui n'ont pas besoin d'une "grande puissance". Ceci n'est pas mon opinion, au contraire.

En TP de mon groupe (peut-être dans d'autres, et aussi en cours ; tout dépend de mes collègues et de Mme Françoise Lambert) nous allons utiliser Matplotlib, une couche de haut niveau ; on fera des dessins avec un minimum de surcharge de programmation.

Pour tracer une sinusoïde entre 0 et 4π, il suffit de coder

from pylab import *
x=linspace(0,4*pi,300)
plot(x,sin(x))
show() # Ceci est souvent inutile
Mais on peut aussi tracer les éléments primitifs : lignes, rectangles ellipses vides et remplies, etc. Je ne sais pas quels outils sont utilisés lors de l'introduction aux images, mais avec Matplotlib (et pylab qui ramasse la plupart de fonctionnalités dans un espace de noms), afin de faire une image-bitmap et la tracer, on peut coder :
ar=[[0.1, 0.7, 0.2, 0.3, 0.3],
    [0.0, 0.9, 0.5, 0.9, 0.4],
    [0.9, 0.8, 0.7, 0.6, 0.5],
    [0.2, 0.7, 0.7, 0.2, 0.7]]

imshow(ar,interpolation="nearest",cmap="gray")
show()
La transformation des images traitées comme des tableaux, avec couleurs, lissage, récupération des contours des objets dedans, est si facile, que nous pourrons le faire à votre niveau, sans avoir besoin d'aucun autre outil supplémentaire.

GUI

Concernant les interfaces visuelles : fenêtres avec boutons, cases à cocher, cases d'entrée textuelle, et autres widgets – Matplotlib n'est pas un bon outil, quelques dispositifs dedans sont trop restreints. Alors, si nous avons dénigré Tkinter, quelles sont les alternatives?

Nous disposons d'une bonne dizaine de paquetages graphiques / d'interfaçage, pour tous les goûts, voir ces deux - Wiki - pages. Il est impossible d'en discuter plusieurs dans cette introduction. Alors, quel est mon choix actuel :

Voici une application minimaliste :

from PyQt4 import QtGui, QtCore
app = QtGui.QApplication([])
hello = QtGui.QPushButton("Hello World!", None); hello.show(); app.exec_()

Afin de profiter pleinement des dispositifs d'interfaçage visuels, il faut maîtriser les techniques de programmation objet, ce qui est enseigné en L2, mais quelques informations superficielles vous seront transmises aussi lors de ce cours. En deux mots, un objet (au sens technique) est – typiquement – une structure de données composite, qui "contient" des procédures spécifiques (méthodes) qui peuvent agir sur / avec cet objet de manière structurée, ce qui rend la programmation plus modulaire, et qui peut être plus sécurisée.


Littérature disponible sur l'Internet

Madame Lambert vous donnera une liste de références en cours ; les positions ci-dessous peuvent répéter quelques unes. Sachez que l'on ne peut apprendre un langage de programmation ni en salle de cours, ni en TP ; il FAUT travailler off-line, de manière autonôme. Ceux qui pensent que les TP suffisent, commettent une erreur dangereuse. Il va de soi que vous devez pouvoir lire les textes en anglais sans trop de problèmes. En particulier, la documentation officielle, la seule qui est mise à jour de manière régulière, est en anglais.


Peut-être j'ajouterai plus tard d'autres textes qui compléteront le cours avec les informations sur le logiciel existant, des modules et paquetages Python qui peuvent vous être utiles. Si vous trouvez une nouvelle position qui vous a plu, contactez-moi, je diffuserai cette information.


Retour à l'index