1
votes

Comment obtenir la complétion de code dans un notebook Jupyter s'exécutant dans Docker

J'ai suivi les instructions du hub Docker Tensorflow pour pouvoir utiliser une image docker prête pour le GPU avec un port exposé pour le développement local de notebooks Jupyter; y compris l'installation du nvidia-docker

Je peux importer des packages sans problème, mais la complétion du code ne fonctionne pas lorsque vous appuyez sur l'onglet. Par exemple:

$  docker --version
Docker version 18.09.1, build 4c52b90

Je peux utiliser le code si je tape I manuellement. Je peux exécuter ce qui suit:

docker run -u $(id -u):$(id -g) -it --runtime=nvidia --rm \
    -v $(realpath ~/Documents/jupyter_notebooks):/tf/notebooks \
    -p 8888:8888 tensorflow/tensorflow:nightly-gpu-py3-jupyter

Fait intéressant, si je tape tf. et frappe shift- code > J'obtiens la docstring généralement complète:

 entrez la description de l'image ici


J'ai utilisé la commande suivante pour extraire l'image du docker et l'exécuter :

import numpy as np            # no complaints
np.arange(0, 10)              # returns expected result

En plus de lier un dossier local au conteneur, cela mappe mon ID utilisateur au conteneur en cours d'exécution, donc je ne travaille pas depuis root em > le dossier personnel de> (mon installation de docker est conçue pour appartenir à root . Je peux ouvrir le répertoire notebook dans le navigateur et démarrer un nouveau notebook Python3, comme d'habitude.

I J'utilise Ubuntu 16.04, j'ouvre des blocs-notes Jupyter dans Chrome (j'utilise l'extension vimium , mais elle est désactivée et j'ai redémarré le conteneur après avoir pensé qu'il pouvait jouer avec les commandes clavier envoyées à Chrome). p >

import tensorflow as tf       # works fine
tf. <tab>                     # nothing happens


0 commentaires

3 Réponses :


2
votes

Je suis tombé sur une solution simple et rapide - il suffit d'exécuter l'une des commandes magiques Jupyter:

%config IPCompleter.greedy=True

A également travaillé dans un notebook Jupyter fonctionnant dans PyCharm. Dès que j'ai exécuté cette commande, PyCharm a commencé à indexer le projet, ce qui signifie que l'achèvement du code fonctionnait aussi bien dans les scripts que dans le cahier (qui ne fonctionnait pas non plus!)

Il devrait être possible d'ajouter le config dans un fichier de configuration Jupyter global.


Il existe une deuxième solution possible sur le même thread, en utilisant une extension notebook, mais je ne l'ai pas testée.

p >


2 commentaires

Voici la documentation pertinente pour % config


J'ai essayé cela mais cela n'a pas fonctionné pour moi. J'utilise également le docker tensorflow avec gpu sur Ubuntu 18.04: /



1
votes

J'ai écrit un plugin pour jupyter notebook qui fournit une autocomplétion de code basée sur un modèle d'apprentissage profond. C'est le modèle C / S, et peut être exécuté partout. Vous pouvez essayer ceci: https://github.com/wenmin-wu/jupyter-tabnine a> Cet outil est désormais disponible sur pypi . Exécutez simplement la commande de quatre lignes et profitez-en :)

pip3 install jupyter-tabnine
jupyter nbextension install --py jupyter_tabnine
jupyter nbextension enable --py jupyter_tabnine
jupyter serverextension enable --py jupyter_tabnine

 demo


0 commentaires

1
votes

Le plugin tabnine de Wenmin Wu est certainement un meilleur service d'auto-complétion que celui intégré.

Je tiens à souligner qu'IPython utilise Jedi pour effectuer l'auto-complétion et d'autres magies. Cependant, la compatibilité entre le duo est problématique de temps en temps. En plus d'attendre une mise à jour IPython, une solution simple est cette magie:

%config IPCompleter.use_jedi=False


0 commentaires