Rédaction d'une collection de tutoriels Python

Qui ? Quoi ? Comment ?

a marqué ce sujet comme résolu.

À ce propos, que sont devenues les différentes idées évoquées sur ce sujet ?

  • Le tutoriel sur le packaging a-t-il été débuté ?
  • Qui serait intéressé par la rédaction d'un cours assez complet sur l'objet en Python, qui ferait la liaison entre le cours d'introduction au langage et les cours plus avancés ?

Le tutoriel sur le packaging a-t-il été débuté ?

Oui c'est commencé, en beta et ça sera beaucoup retravaillé quand j'aurai un peu de temps.

+0 -0

Puisque Nohar relance le sujet, j'en profite pour dire que je compte écrire un tuto « Python pour scientifique ». Ce n'était pas ma priorité jusqu'ici, mais le fait est que je suis dans un labo de mécanique, et qu'en moins de 6 mois, je suis devenu l'un des référents en programmation (on ne rit pas). L'autre référant passant en 3e année de thèse en septembre prochain, inutile de vous dire qui va devoir dire comment on utilise numpy à tous les nouveaux…

Aussi bien pour savoir quoi dire (la 1ère fois, ce n'est pas évident) que pour ne pas passer trois plombes à chaque fois (soyons honnêtes), je compte rédiger un moyen-tuto sur la programmation scientifique en python. Ce serait orienté traitement de donnée, numpy/scipy/matplotlib et petit scripts scientifiques (que les gens font d'habitude en matlab). Tout ce qui est Cython, optimisations ou qui se rapproche de l'orienté objet ne serait pas traité.

Dans l'idéal, ce serait fait d'ici octobre. Mais je ne tiens jamais mes délais.

Il faudra que je me cale avec les autres (coucou Karnaj) au moins pour les questions d'installation. Je n'ai pas du tout envie de pousser à passer par pip (je sais très bien que ça signifierait perdre 3/4 des lecteurs potentiels), je penche pour Anaconda (car c'est facile, multiplateforme, on a toutes les bibliothèques d'un coup, plus un IDE correcte, et le tout est libre) ou, sous linux, le gestionnaire de paquet.

Je reposterai ici quand j'aurais vraiment commencé. Mais si d'autres personnes comptes faire des tuto dans la même branche, je serai ravi qu'on s'accorde sur la procédure d’installation/l'environnement.

Gabbro

Je plussoie fortement Anaconda. En plus, il y a un système d'environnements virtuels bien fichu, et sous Linux l'installation se fait dans un sous-dossier du ~, donc sans privilèges particuliers et ça c'est pratique, surtout pour un serveur partagé.

C'est une très bonne idée de tuto. Comptes-tu parler de Jupyter ? À mon avis on fait pas mieux: cellules de code, de texte, support de LaTeX, matplotlib etc… C'est vraiment un super bon outil qui permet de faire son journal de labo, ses calculs et traitements au même endroit, avec export en PDF en plus. Je peux plus m'en passer personnellement, toutes les analyses de résultats de mon TIPE et mes preuves sont dedans.

Il faudra que je me cale avec les autres (coucou Karnaj) au moins pour les questions d'installation. Je n'ai pas du tout envie de pousser à passer par pip (je sais très bien que ça signifierait perdre 3/4 des lecteurs potentiels), je penche pour Anaconda (car c'est facile, multiplateforme, on a toutes les bibliothèques d'un coup, plus un IDE correcte, et le tout est libre) ou, sous linux, le gestionnaire de paquet.

Je trouve que c’est une bonne idée (même si le lecteur n’a pas forcément envie d’installer Anaconda).

En provisionnant quelques billets Python en préparation à l'arrivée prochaine des tribunes libres sur ZdS, je me suis retrouvé à écrire plusieurs billets que j'ai… fini par regrouper dans un tutoriel. :D

Celui-ci est en bêta et porte sur le pattern Dispatcher.

Je file lire ça. :)

+0 -0

J'avoue qu'installer scipy via pip n'est pas l'une de mes premières expériences les plus plaisantes. Après avoir été obligé de combler toutes les dépendances pour le compiler (sans déconner, il y a même un COMPILATEUR FORTRAN dans les dépendances !! Allo ?!), je sais pas si on peut vraiment se déclarer d'humeur à poursuivre un tuto…

Donc s'il existe un gestionnaire de packaging qui marche mieux pour scipy que le package manager standard de Python, selon moi, ça ne peut être qu'une bonne idée de le mentionner dans le tuto. :D

+0 -0

C'est pas un gestionnaire de packaging, c'est un programme gros paquet qui vient avec :

  • l’interpréteur python ;
  • un IDE (spyder) ;
  • numpy, matpotlib, scipy (au moins) ;
  • jupyter.

Le tout installable sans droit admin. Si tu veux rajouter des paquets en plus, tu dois pouvoir le faire en utilisant pip (j'ai pas essayé, je suis sous linux, donc j'utilise ma distribution pour choper sci/numpy). Pour les windowsien, ça permet d'avoir tout ce qu'il faut pour commencer (voir même tout ce qu'il faut tout court selon l'usage) en littéralement 5 minutes.

le lecteur n’a pas forcément envie d’installer Anaconda

Si le lecteur n'a pas anaconda ou spyder, tant qu'il a numpy, scipy et matplotlib, il pourra suivre le tuto sans aucun problème. Il n'y a rien de spécifique à anaconda.

Comptes-tu parler de Jupyter ?

Non. Il mériterait un tuto à part entière. Je préfère me consacrer à la partie spécifique aux scientifiques.

+0 -0

Attention, Anaconda c'est la grosse distribution, mais il existe une version minimale, Miniconda, où on te file juste le gestionnaire de paquets conda, et tu choisis ce que tu installes. C'est ce que je fais, pour installer des paquets pas fournis par défaut avec conda tu fais conda install truc.

Je n'aime pas installer des choses comme numpy ou scipy avec mon gestionnaire de paquets système, puisque ça mettait le merdier je sais pas comment entre pip et pacman. Miniconda me sert à isoler tout ça: si j'ai besoin de coder je rentre dans l'environnement virtuel conda associé au projet, et pour les paquets au niveau du système qui ont besoin de scipy, je laisse le gestionnaire de paquets faire. C'est plus propre et bien moins chiant comme ceci je trouve.

@gabbro : j'ai commencé justement il y a quelques jours un tuto sur numpy. J'avais envisagé un tuto comme toi mais le problème est qu'attendre d'avoir ça va me démoraliser. Je préfèrai faire plusieurs petits tuto et les regrouper ensuite.

Tu veux qu'on fasse ça ensemble ?

Yep, ça m'intéresse. Il y a déjà le tuto de Karnaj sur matplotlib.

L'avantage de faire, à terme, un gros tuto, est de mutualiser la procédure d'installation et de permettre d'ajouter des TP. Mais commencer par plusieurs mini-tuto est plus encourageant d'un point de vue psychologique, on est d'accord.

+0 -0

Pour l'installation j'ai juste mit un "apt get" pour linux (je n'ai pas windows) et fondamentalement l'installation est pour moi un point annexe.

Je vais faire le tri dans mon début de tuto et je t'ajoute.

+3 -0

Pour l'installation, Miniconda est pas mal. Son avantage principal sur Anaconda est de ne pas peser 2G, et donc de diminuer la quantité de données à télécharger.

Pour ceux qui ne connaissent pas cet univers, conda est un gestionnaire de paquets générique, écrit en Python et basé sur une distribution de paquets pré-compilés (pas besoin d'installer de compilo Fortran !). Miniconda installe uniquement ce gestionnaire, tandis que Anaconda est une distribution scientifique Python basée sur conda et qui distribue un grand nombre de paquets par défaut.

L'avantage principal de conda est que l'entreprise derrière Anaconda offre une solution de distribution de paquets binaires à tous. Donc si moi je veux distribuer mon code C++ à d'autres scientifique, je peut utiliser conda pour leur offrir une version pré-compilée des binaires/bibliothèques.

+0 -0

Ça me plaît bien l’idée d’un tutoriel sur l’installation de Miniconda et son utilisation. Comme ça, les autres tutoriel auront une bonne base vers laquelle renvoyer pour les installations. En plus, ça permet une certaine harmonie entre les tutoriels. Quelqu’un a déjà commencé son écriture ?

+0 -0

L'activité sur ce sujet m'a beaucoup motivé, ça fait vraiment plaisir. N'ayant pas lu l'ensemble du sujet auparavant (ou alors c'était il y a bien longtemps), je viens de le faire et me rendre compte qu'il y avait beaucoup d'idées non explorées ou qui sont passées aux oubliettes.

Pour ce dernier point, j'ai pensé que rédiger les cours sur GitHub de façon à ce qu'on puisse se PR-iser les uns chez les autres serait déjà un bon point de départ.

nohar

Il faudrait aussi trouver un moyen d'explorer la lib standard. Beaucoup de tutos vont la brosser indirectement mais certaines parties ne pourront être couvertes où seront difficile d’accès. Une idée serait peut être de préparer une série d'article/mini-tuto, chacun sur un module de la lib standard. Ça permetrait à chaque tuto de les référencer ("Nous allons utiliser les namedtuple dans ce chapitre, assurez vous d'avoir lu cet article a propos du module collections de la lib standard"). Si on arrive à se préparer un pool, on peut imaginer faire des publications régulières ("Module python du mois/de la semaine")

Kje

Je propose qu'on crée sur GitHub une ogranisation où l'on regroupe l'ensemble de nos tutoriels en rédaction afin d'avoir une bonne visibilité et d'éviter que chacun ai son tutoriel dans son coin. Qu'en pensez vous ?

Sinon tu peux mettre ) jour le premier post avec ça :

Idées en vrac (entre parenthèses des potentiels contributeurs):

Asyncrone

  • asyncio

Base de données

  • pymongo

Interface graphique

  • Kivy
  • turtle

Multimédia (jeu, image, son, vidéos, et)

  • Pillow
  • pygame

Optimisation

  • Cython et ctypes
  • profiling CPU et mémoire

Qualité / Documentation

  • flake 8 / pylint (gustavi)
  • pydoc
  • Sphinx

Réseau

  • request
  • pycurl

Scientifique

  • Matplotlib
  • numpy
  • Pandas
  • Scikit learn
  • SymPy

Template

  • Jinja2 (gustavi)
  • moya (gustavi)

Web

  • bottle
  • CherryPy (gustavi)
  • Django - API avec DRF (gustavi)
  • Django - Les formulaires avancées (gustavi)
  • Flask
  • Tornado (artragis, gustavi)
  • web2py
  • webbrowser

Personnes intéressées et domaines (à compléter) :

  • Dan737 : python débutant
  • entwanne : python avancé, réseau
  • Gabbro : calcul scentifique
  • gustavi : base, framework web, optimisation
  • Karnaj : scientifique
  • Kje : calcul scentifique
  • nohar : base, système, réseau, optimisation
+4 -0

Niveau bibliothèque standard, j'ai essayé d'en couvrir une partie dans mon tutoriel, avec les modules principalement utilisés (itertools, functools, operator, contextlib), j'en survole quelques autres (inspect, singledispatch, collections), et j'aimerais prochainement ajouter un chapitre sur les fonctions isinstance et issubclass, donc axé sur le module collections.abc.

Mais c'est vrai que c'est loin d'être exhaustif, si quelqu'un est décidé à écrire une série d'articles sur la stdlib, j'y prendrai part volontiers !

Niveau bibliothèque standard, j'ai essayé d'en couvrir une partie dans mon tutoriel, avec les modules principalement utilisés (itertools, functools, operator, contextlib), j'en survole quelques autres (inspect, singledispatch, collections), et j'aimerais prochainement ajouter un chapitre sur les fonctions isinstance et issubclass, donc axé sur le module collections.abc.

Mais c'est vrai que c'est loin d'être exhaustif, si quelqu'un est décidé à écrire une série d'articles sur la stdlib, j'y prendrai part volontiers !

entwanne

Oui ça fait un moment qu'on évoque cette idée. Je pense qu'il est grand temps qu'on s'y colle.

Niveau modules (standard ou non d'ailleurs), je rajouterais à la liste de gustavi :

système & réseau

  • socket, socketserver (standard)
  • psutil (PyPI)

Sinon j'ai un bon gros billet de TL qui parle d'acora. Pour l'instant il se contente de comparer ses perfs avec re pour montrer qu'il est vraiment optimal pour la recherche de mots-clés dans un flux d'information, mais si ça vous intéresse de l'ajouter à cette liste, je peux le coller sur un repo GitHub.

Faudrait juste lui rajouter un exemple de programme utile qui l'utilise. Mais pour ça j'ai une idée : un système de taggage automatisé. Par exemple, proposer une liste de tags automatiquement à un utilisateur quand il vient de rédiger un contenu sur ZdS.

PS : Voilà pour le repo. https://github.com/ArnaudCalmettes/article_acora

+1 -0

Tiens pendant que j'y pense, l'AFPY est en train de traduire la doc de Python en français (on peut contribuer sur github). Il semble acquis qu'une fois bien avancé elle sera intégré à celle officiel de python, sur https://docs.python.org (actuellement ils discutent de la forme des url pour les traductions de docs).

Outre le coté informatif, est ce qu'il faudrait à terme qu'on incite les auteurs a préféré les liens vers la doc française plutôt qu'anglaise (quand elle sera intégré officiellement) ?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte