web-dev-qa-db-fra.com

Exécution du cahier Jupyter dans un virtualenv: module sklearn installé non disponible

J'ai installé un virtualenv machinelearn et installé quelques modules en python (pandas, scipy et sklearn) dans cet environnement.

Lorsque je lance jupyter notebook, je peux importer des pandas et scipy dans mes cahiers. Toutefois, lorsque j'essaie d'importer sklearn, le message d'erreur suivant s'affiche:

import sklearn

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-8fd979e02004> in <module>()
----> 1 import sklearn

ImportError: No module named 'sklearn'

Je peux importer tous les modules, en ligne de commande - je sais donc qu'ils ont été installés avec succès:

(machinelearn) me@yourbox:~/path/to/machinelearn$ python -c "import pandas, scipy, sklearn"
(machinelearn) me@yourbox:~/path/to/machinelearn$ 

Comment puis-je importer sklearn dans mon cahier jupyter fonctionnant sous virtualenv?

12
Homunculus Reticulli

Vous n'avez probablement pas installé jupyter/IPython dans votre virtualenv. Essayez ce qui suit:

python -c "import IPython"

et vérifiez que la commande jupyter trouvée dans votre $PATH est celle du dossier bin de votre venv:

which jupyter

Pour les utilisateurs Windows dans une console Powershell, vous pouvez utiliser les éléments suivants pour vérifier que la commande jupyter dans votre $env:Path est celle du dossier Scripts de votre venv:

get-command jupyter

Edit : si tel est le problème, exécutez simplement python -m pip install jupyter dans votre fichier .vv.

Edit 2 : en fait, vous pourriez aussi avoir besoin de:

python -m ipykernel install --user --name=my-virtualenv-name
15
ogrisel

Une autre approche consiste à avoir une installation globale de Jupyter, mais de pointer sur différents noyaux pour exécuter le backend. 

Cette approche est décrite ici dans leur documentation: http://help.pythonanywhere.com/pages/IPythonNotebookVirtualenvs

Copie ci-dessous en cas de rupture du lien: Vous pouvez utiliser virtualenv pour votre bloc-notes IPython. Suivez les étapes suivantes:

Installez le module de noyau ipython dans votre virtualenv

workon my-virtualenv-name  # activate your virtualenv, if you haven't already
pip install ipykernel

Maintenant, lancez le script "auto-installation" du noyau:

python -m ipykernel install --user --name=my-virtualenv-name

Remplacement du paramètre --name selon le cas.

Vous devriez maintenant pouvoir voir votre noyau dans le menu du cahier IPython: Kernel -> Changer le noyau et pouvoir le changer (vous devrez peut-être actualiser la page avant qu'elle apparaisse dans la liste). IPython se souviendra ensuite du noyau à utiliser pour ce cahier.

13
ClimbsRocks

Pour utiliser le bloc-notes Jupyter avec un environnement virtuel (à l'aide de virtualenvwrapper) et des packages installés dans cet environnement, procédez comme suit:

  1. créer un environnement virtuel

    mkvirtualenv --no-site-packages --python=/your/python/path your_env_name
    
  2. Activer l'environnement virtuel

    workon your_env_name
    
  3. Installer Jupyter et d'autres packages

    pip install jupyter, numpy
    
  4. Ajouter un nouveau noyau à votre configuration Jupyter

    ipython kernel install --user --name=your_env_name
    
  5. Terminé. Vous pouvez maintenant utiliser le bloc-notes Jupyter dans l'environnement virtuel.

    jupyter-notebook
    

Avertissement: la question a été répondue mais est cachée dans l'une des réponses. J'ai cherché sur Google et j'ai pris le temps de trouver la bonne réponse. Donc, je viens de résumer pour qu'une personne ayant le même problème puisse facilement suivre.

2
C. Feng

Création de virtualenv avec la commande python3 -m venv

J'ai eu le même problème que le vôtre . Dans mon cas, j'avais créé virtualenv avec la commande

python3 -m venv ./my_virtual_env --system-site-packages

Le problème était que je ne pouvais pas installer jupyter dans l'environnement virtuel, car il se trouvait déjà dans le paquet system-site (lorsque vous essayez de l'installer, il vous indique que "l'exigence est déjà satisfaite").

Pour installer jupyter (et dans un premier pip, cela ne s’installe pas non plus dans votre environnement virtuel avec cette commande) mais avez toujours accès au paquet system-site-package que vous pouvez exécuter:

python3 -m venv ./my_virtual_env

Activez votre environnement virtuel, exécutez pip3 install jupyter (et pip3 install pip), puis activez l'option include-system-site-packages dans le fichier ./my_virtual_env/pyvenv.cfg.

Après la désactivation et la réactivation de votre environnement, vous aurez accès aux packages de site du système.

Création de virtualenv avec la commande virtualenv

Étant donné cette réponse vous pouvez empêcher l’accès aux paquets-sites du système en créant un fichier ./my_virtual_env/lib/python3.4/no-global-site-packages.txt,et récupérer l’accès par l'enlever.

1
Tiphaine Champetier

Vous pouvez toujours installer jupyter dans votre environnement virtuel si vous avez créé votre env virtuel en utilisant:

python -m venv --system-site-packages path/to/my-venv

Faites simplement ceci:

activate-your-env
pip install -I jupyter

Et vous êtes maintenant prêt à partir

jupyter notebook
0
Vijay Kumar