Résumé (tldr)
Si vous souhaitez que le noyau 'python3' exécute toujours l'installation Python à partir de l'environnement dans lequel il est lancé, supprimez le noyau utilisateur 'python3', qui a la priorité sur l'environnement actuel avec:
jupyter kernelspec remove python3
Solution complète
Je vais publier une solution alternative et plus simple pour le cas suivant:
- Vous avez créé un environnement conda
- Cet environnement a installé jupyter (qui installe également ipykernel)
- Lorsque vous exécutez la commande
jupyter notebook
et créez un nouveau bloc-notes en cliquant sur «python3» dans le menu déroulant «Nouveau», ce bloc-notes exécute python à partir de l'environnement de base et non à partir de l'environnement actuel.
- Vous souhaitez que le lancement d'un nouveau bloc-notes avec 'python3' dans n'importe quel environnement exécute la version Python de cet environnement et NON la base
Je vais utiliser le nom 'test_env' pour l'environnement pour le reste de la solution. Notez également que «python3» est le nom du noyau.
La réponse actuellement la plus votée fonctionne, mais il existe une alternative. Il dit de faire ce qui suit:
python -m ipykernel install --user --name test_env --display-name "Python (test_env)"
Cela vous donnera la possibilité d'utiliser l'environnement test_env quel que soit l'environnement à partir duquel vous lancez jupyter notebook
. Mais, le lancement d'un ordinateur portable avec «python3» utilisera toujours l'installation Python à partir de l'environnement de base.
Ce qui se passe probablement, c'est qu'il existe un noyau utilisateur python3. Exécutez la commande jupyter kernelspec list
pour répertorier tous vos environnements. Par exemple, si vous avez un mac, vous serez renvoyé ce qui suit (mon nom d'utilisateur est Ted).
python3 /Users/Ted/Library/Jupyter/kernels/python3
Ce que Jupyter fait ici, c'est chercher à travers trois chemins différents à la recherche de noyaux. Cela va de l' utilisateur , à Env , au système . Consultez ce document pour plus de détails sur les chemins qu'il recherche pour chaque système d'exploitation.
Les deux noyaux ci-dessus sont tous les deux dans le chemin utilisateur, ce qui signifie qu'ils seront disponibles quel que soit l'environnement à partir duquel vous lancez un bloc-notes jupyter. Cela signifie également que s'il existe un autre noyau 'python3' au niveau de l'environnement, vous ne pourrez jamais y accéder.
Pour moi, il est plus logique de choisir le noyau 'python3' dans l'environnement à partir duquel vous avez lancé le bloc-notes devrait exécuter Python à partir de cet environnement.
Vous pouvez vérifier si vous avez un autre environnement 'python3' en recherchant dans le chemin de recherche Env pour votre système d'exploitation (voir le lien vers les documents ci-dessus). Pour moi (sur mon mac), j'ai émis la commande suivante:
ls /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels
Et j'avais en effet un noyau 'python3' répertorié là-bas.
Grâce à ce commentaire sur le problème GitHub (regardez la première réponse), vous pouvez supprimer l'environnement 'python3' de l'utilisateur avec la commande suivante:
jupyter kernelspec remove python3
Maintenant, lorsque vous exécutez jupyter kernelspec list
, en supposant que test_env est toujours actif, vous obtiendrez les éléments suivants:
python3 /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels/python3
Notez que ce chemin se trouve dans le répertoire test_env. Si vous créez un nouvel environnement, installez jupyter, activez-le et listez les noyaux, vous obtiendrez un autre noyau 'python3' situé dans son chemin d'environnement.
Le noyau utilisateur 'python3' prenait le pas sur n'importe lequel des noyaux Env 'python3'. En le supprimant, le noyau de l'environnement actif 'python3' était exposé et pouvait être choisi à chaque fois. Cela élimine le besoin de créer manuellement des noyaux. Cela a également plus de sens en termes de développement logiciel où l'on voudrait s'isoler dans un environnement unique. L'exécution d'un noyau différent de l'environnement hôte ne semble pas naturelle.
Il semble également que cet utilisateur 'python3' ne soit pas installé pour tout le monde par défaut, donc tout le monde n'est pas confronté à ce problème.
conda install ipykernel
dans cet environnement.