Installer des extensions jupyter

a marqué ce sujet comme résolu.

Bonjour,

J’essaie de me mettre aux jupyter notebooks. Je n’arrive pas à comprendre comment fonctionnent les extensions.

La documentation indique d’utiliser pip ou conda. Mais pip et conda ne sont censés être utilisés que dans des environnement virtuels. J’imagine qu’ils n’ont quand même pas prévus qu’on allait refaire toute la config à chaque nouveau projet ?

Si j’essaie de lancer pip en dehons d’un venv, bien évidement l’os gueule :

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try 'pacman -S
    python-xyz', where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Arch-packaged Python package,
    create a virtual environment using 'python -m venv path/to/venv'.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip.
    
    If you wish to install a non-Arch packaged Python application,
    it may be easiest to use 'pipx install xyz', which will manage a
    virtual environment for you. Make sure you have python-pipx
    installed via pacman.

Quelle est la méthode propre pour gérer les plugin de jupyterlab ?

La documentation indique d’utiliser pip ou conda. Mais pip et conda ne sont censés être utilisés que dans des environnement virtuels. J’imagine qu’ils n’ont quand même pas prévus qu’on allait refaire toute la config à chaque nouveau projet ?

1e49ba0eba

Et pourquoi pas, si chaque projet a ses propres dépendances ?

J’utilise assez peu jupyter (seulement pour faire des présentations de temps en temps) donc n’ai pas souvent l’occasion d’installer des extensions, mais quand je le fais ça passe effectivement par des paquets Python à installer. Et j’ai un environnement virtuel différent pour chaque projet.

Pour installer des paquets Python, tu as en effet grossièrement 2 choix :

  • Utiliser le gestionnaire de paquets du système (apt, yum, pacman, brew ou autre), qui contrôle les répertoires partagés dans lesquels ces paquets peuvent être installés.
  • Utiliser un gestionnaire de paquets Python (pip, conda, poetry, etc.) dans un environnement virtuel, afin de ne pas entrer en conflit avec l’OS justement1 (c’est pour ça qu’aujourd’hui Python permet aux OS de bloquer l’installation des paquets pip hors des venv).

Mais l’environnement virtuel tu en fais ce que tu veux : tu peux le partager entre plusieurs projets et donc avoir en gros un venv "playbook jupyter" qui contient jupyter et tous les plugins dont tu as besoin couramment.


  1. Le souci qui a mené à la PEP 668 étant que l’installation de dépendances via pip puisse casser un paquet installé au niveau de l’OS puisque plusieurs versions d’un même paquet Python ne peuvent pas coexister dans un même environnement.

Ok, je ne suis pas sûr qu’on parle de la même chose.

Un projet a ses dépendances, qui seront les mêmes si j’utilise Pycharm, Jupyter, VSCode ou Notepad++ pour développer. Jusque là on est d’accord ?

Ensuite chacun de ces logiciels a sa config et ses extensions. Si l’interface de Notepad++ est en Français, je veux qu’elle le reste quel que soit le projet ? Et si je travaille avec un anglophone sur le même projet, il ne voudra pas que son interface soit en Français ? Et, à priori, s’il s’agit d’un projet communautaire avec 2000 contributeurs, on ne va pas stocker les 2000 configs dans l’environnement virtuel du projet ?

Est-ce que Jupyter adopte une logique différente ? J’ai loupé un truc ?

Bon admettons.

J’ai installé jupyterlab-language-pack-fr-FR et lckr-jupyterlab-variableinspector dans mon environnement virtuel. Elles n’apparaissent pas dans le plugin manager. Mon interface est toujours en Anglais et il n’y toujours que « English » qui apparaît dans Settings/Language. Et je ne trouve aucun inspecteur de variable.

Je fais quoi ensuite ?

Ça dépend quelle place tu accordes à Jupyter.

Tu en parles comme un éditeur de texte (donc un outil extérieur au projet), personnellement je l’utilise comme dépendance d’un projet (le projet dépend de Jupyter pour tourner, alors qu’il ne dépend pas d’emacs, Pycharm ou autre).

Si tu n’en as pas besoin comme dépendance d’un projet mais comme outil externe : installe-le à l’extérieur de ton projet via le gestionnaire de paquets de ton OS et ne mêle pas Python à ça (comme tu n’installes probablement pas Pycharm via pip).

personnellement je l’utilise comme dépendance d’un projet (le projet dépend de Jupyter pour tourner, alors qu’il ne dépend pas d’emacs, Pycharm ou autre).

Je dois louper un truc. Dans ton code tu as un import jupyter et des ma_variable = jupyter.une_fonction_jupyter() quelque part ? Tu as des exemple d’usage ?

Si tu n’en as pas besoin comme dépendance d’un projet mais comme outil externe : installe-le à l’extérieur de ton projet via le gestionnaire de paquets de ton OS et ne mêle pas Python à ça (comme tu n’installes probablement pas Pycharm via pip).

C’est ce que j’ai fait. D’où ma question initiale sur la façon d’installer les dépendance.

EDIT : j’ai essayé de lancer jupyterlab depuis l’environnement virtuel. Il faut compiler un truc qui s’installe dans .local/share/jupyter (donc pas dans l’environnement virtuel) avec jupyter lab build (lancée depuis l’environnement virtuel). Et ça se lance avec les extensions du venv activées. J’avoue que je suis un peu incrédule face au fonctionnement du logiciel. C’est quoi la logique et la finalité de tout ça ?

+0 -0

Je dois louper un truc. Dans ton code tu as un import jupyter et des ma_variable = jupyter.une_fonction_jupyter() quelque part ? Tu as des exemple d’usage ?

1e49ba0eba

Je ne pense pas en avoir un usage conventionnel puisque comme je disais je l’utilise exclusivement pour des présentations.

Par exemple ici j’ai typiquement un outil qui génère un fichier ipyb (notebook jupyter) à partir de sources Markdown, et j’utilise jupyter et rise pour que cela prenne la forme d’une présentation reveal.js interactive (je peux y exécuter des blocs de code).

jupyter et rise (une extension) sont donc parties prenantes de mon projet : sans elles je n’ai qu’un fichier ipynb que je ne peux pas exploiter.

C’est ce que j’ai fait. D’où ma question initiale sur la façon d’installer les dépendance.

1e49ba0eba

Les extensions ne peuvent alors pas dans ce cas s’installer elles aussi au niveau de l’OS ?

Sinon j’en reviens à la question des 2000 contributeurs/contributrices et leurs 2000 configurations : oui, pourquoi pas. En sachant que toute configuration n’a pas vocation à être partagée et peut donc restée locale (pas poussée sur le gestionnaire de versions du projet).

Les extensions ne peuvent alors pas dans ce cas s’installer elles aussi au niveau de l’OS ?

Ben justement, c’est l’objet de ce topic. Je n’ai rien trouvé dans les dépôts, et puis dans les autres logiciels (vim, firefox…), c’est toujours des trucs qui s’installent au niveau de la config utilisateur.

Je ne comprends pas qu’une fonctionnalité aussi basique soit aussi compliquée et mal documentée. Donc, c’est peut-être que je m’y prends mal et que le logiciel n’est pas prévu pour être utilisé comme je le fait. Mais dans ce cas, quelle est la bonne façon de faire et pourquoi ?

Ok. Je trouve ça incroyablement lourd et surprenant. Mais je vais faire comme ça en l’absence de meilleur méthode.

Si quelqu’un a un peu l’habitude de jupyter passe sur le topic, qu’il n’hésite pas à déterrer.

Merci pour ton aide en tout cas.

+0 -0
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