Travailler à deux sur iPython à distance


Bon, j’ai pas fini mon slideshow sur WAMP, donc je vais faire un article sur ça.

iPython notebook, c’est pratique, mais une seule personne peut coder à la fois. Si quelqu’un veut voir les changements, il faut recharger avec F5. A l’heure des Google Doc temps réel, c’est con. Surtout que c’est du ZMQ derrière.

Du coup je me suis lancé dans une expérimentation avec TogetherJS, la lib de Momo pour le travail collaboratif.

Pour lancer le truc, il suffit d’aller dans son dossier de profile iPython et éditer le fichier Javascript vierge fait pour étendre l’outil. Par exemple, sous Ubuntu, mon profile par défaut est dans ~/ipython/profile_default et le fichier à éditer est ./profile_default/static/custom/custom.js.

Dedans on met :

TogetherJSConfig_autoStart = true;
TogetherJSConfig_cloneClicks = false;
TogetherJSConfig_dontShowClicks = true;
$.getScript('https://togetherjs.com/togetherjs-min.js');

Et on est bon. Il faut ouvrir deux browsers différents pour bien tester le truc, par exemple un chrominou et un firefoune. Moi j’ai ouvert deux FF parce que j’ai pleins de profiles dessus.

La frappe est bien synchro, mais malheureusement pas l’affichage du résultat. Y a donc bien un truc intéressant à creuser, mais pour le moment, c’est pas utilisable.

Ensuite, il y a des services Web. SageMathCloud annonce faire cela, mais impossible de s’inscrire, le formulaire ne marche pas. Codebox propose un env complet de dev en ligne, mais l’inscription est temporairement suspendue. Codebunk marche pas mal, est plutôt bien foutu et clair, mais Python 2.7 uniquement, et aucun moyen d’installer une lib, donc adieu scipy ou matplotlib.

Celui qui s’en rapproche le plus est Pythonanywhere : des consoles synchronisées pour toutes les versions de Python, beaucoup de libs préinstallées (dont scipy et matplotlib), un vrai système de fichier sur lequel travailler, du pip a dispo. Et en prime un éditeur de texte pour des fichiers complets, mais qui lui, n’est pas collaboratif. Damn it. Et impossible d’afficher en ligne une image pondue via matplotlib. En plus, on a pas le concept des cellules d’iPython, qui est super pratique.

Bref, il manque vraiment un outil pour faire ce genre de choses.

16 thoughts on “Travailler à deux sur iPython à distance

  • Hub

    Je sais que les devs du IPython travaille sur une nouvelle version qu’ils ont surnommée Project Jupyter (pour s’affranchir du nom ‘Python’).
    Dans cette nouvelle version, il y a un extension pour du collaboratif : https://colaboratory.jupyter.org/welcome/
    Ca reste du alpha avec des dépendances comme google drive et Chrome mais c’est un premier pas.

    Sinon, il y a tmpnb.org qui génère à la volée des serveurs notebooks temporaires (dev de Jupyer) mais pas encore d’option de collaboration.
    Wakari fait aussi de Ipython dans le cloud avec du partage et tout mais d’après la doc pas moyen non plus de faire du collaboratif.

    Bref, ça manque mais au vu de l’explosion du INotebook, ça devrait pas tarder à arriver.

  • lemeteore

    En effet, il manque vraiment un outil pour faire ce genre de choses.
    Mon habitude: lancer ipython a l’interieur d’une console tmux.
    J’ai pas trouvé plus simple pour l’instant.

  • bussiere

    Ca m’interesse du coup :)

    Perso j’etais partis sur du dropbox bete et mechant

  • kontre

    Pour afficher matplotlib dans un navigateur, y’a mpld3 qui marche bien : ça transforme une figure matplotlib en page web, interactive avec javascript. Comme son nom l’indique, derrière ça utilise la librairie de visualisation D3.

    Ca doit être un beau bordel de travailler à plusieurs dans une même console. C’est pas comme un document qui peut s’éditer en meêm temps à des endroits différents… Je vois pas trop l’intérêt pratique à part des trucs extrêmement ponctuels.

  • Sam Post author

    Intérêt :

    – formation
    – code review
    – demande d’aide
    – explication d’un concept
    – optimisation d’un algo en peer coding

  • Sam Post author

    C’est ce genre de chose que propose pythonanywhere, mais même problème : pas d’affichage d’images pour matplotlib, pas cellules, etc.

  • Phynx

    Les gars de sharelatex viennent de lancer un site à pour la prog collaborative en python et R : http://www.getdatajoy.com. Pour l’instant c’est uniquement de l’édition (google doc avec un bouton “run” à côté), mais il ont l’air d’être à la recherche d’idées pour améliorer le truc (ils ont lancé ça il y a quelques jours).

  • Raito Bezarius

    Sinon une killer web app : koding.io.

    PythonAnywhere en mieux. La collabo est en beta mais ca avance.

  • Raito Beazrius

    Cela s’appelle koding.io, mais le site est sur koding.com, les domains koding.io sont utilisés pour les utilisateurs, donc ouais si tu fais username.koding.io, ça marche. Désolé d’avoir mal précisé.

    Et mieux, certainement : Root access avec VM qui se build dans ton navigateur, Terminal, Drawing board (sisi pour dessiner de la merde quand tu t’ennuies), docker et compagnie accessible sans aucun restriction gratuitement. La seule contrepartie : La VM ne peut pas rester allumer plus de 60 mn sans activité (c-à-d développement dessus, ou interagir avec), ce qui empêche de se monter un serveur web gratis. Si tu veux une VM Always Online, faut payer (comme PythonAnywhere d’un côté).

    J’ai testé les deux personnellement, et je préfère de loin Koding. PA c’est cool mais ce qui me fait chier c’est les batteries. Parfois, on a besoin de gcc pour un package, et bim, le support te répond de te démerder en compilant en user, c’est juste horriblement chiant de devoir galérer avec make et prefix pour bidouiller une install dans le home.

    Donc, j’aime bien Koding. ^^

    • Sam Post author

      @Raito: je viens de tester. C’est super chouette. Merci pour la découverte.

Comments are closed.

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.