Підсумок (tldr)
Якщо ви хочете, щоб ядро 'python3' завжди запускало установку Python із середовища, де воно запускається, видаліть ядро користувача 'python3', яке має перевагу перед тим, у якому поточному середовищі знаходиться:
jupyter kernelspec remove python3
Повне рішення
Я збираюся розмістити альтернативне і простіше рішення для наступного випадку:
- Ви створили середовище conda
- У цьому середовищі встановлено юпітер (який також встановлює ipykernel)
- Коли ви запускаєте команду
jupyter notebook
і створюєте новий ноутбук, натиснувши на кнопку "python3" у спадному меню "Нове", цей ноутбук виконує python з базового середовища, а не з поточного середовища.
- Ви хотіли б це зробити так, що запуск нового ноутбука з 'python3' в будь-якому середовищі виконує версію Python з цього середовища, а НЕ базову
Я буду використовувати назву 'test_env' для оточення для іншої частини рішення. Також зауважте, що "python3" - це ім'я ядра.
Наразі відповідь, що голосує на вершині, дійсно працює, але є альтернатива. Тут написано:
python -m ipykernel install --user --name test_env --display-name "Python (test_env)"
Це дасть вам можливість використовувати середовище test_env незалежно від того, з якого середовища ви запускаєте jupyter notebook
. Але, запустивши ноутбук з 'python3', все одно буде використана установка Python з базового середовища.
Що ймовірно, що це те, що існує ядро користувача python3, яке існує. Виконайте команду, jupyter kernelspec list
щоб перелічити всі ваші середовища. Наприклад, якщо у вас є mac, вам повернуть наступне (моє ім’я користувача - Тед).
python3 /Users/Ted/Library/Jupyter/kernels/python3
Що тут робить Юпітер - це пошук трьох різних шляхів пошуку ядер. Він переходить від користувача , Env до системи . Докладнішу інформацію про шляхи пошуку для кожної операційної системи див. У цьому документі .
Два вище ядра знаходяться на шляху користувача, тобто вони будуть доступні незалежно від середовища, з якого ви запускаєте ноутбук з юпітером. Це також означає, що якщо на рівні навколишнього середовища є ще одне ядро 'python3', ви ніколи не зможете отримати доступ до нього.
Для мене має більше сенсу, що обираючи ядро 'python3' з середовища, з якого запустили ноутбук, слід виконати Python з цього середовища.
Ви можете перевірити, чи є у вас інше середовище 'python3', переглянувши шлях пошуку Env для вашої ОС (див. Посилання на документи вище). Для мене (на моєму mac) я видав таку команду:
ls /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels
І я дійсно мав там ядро 'python3'.
Завдяки цьому коментарю щодо проблеми GitHub (дивіться першу відповідь), ви можете видалити користувальницьке середовище 'python3' за допомогою наступної команди:
jupyter kernelspec remove python3
Тепер, коли ви запустите jupyter kernelspec list
, припускаючи, що test_env все ще активний, ви отримаєте наступне:
python3 /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels/python3
Зауважте, що цей шлях знаходиться в каталозі test_env. Якщо ви створите нове середовище, встановите Jupyter, активуєте його та перерахуєте ядра, ви отримаєте ще одне ядро 'python3', яке знаходиться у його середовищі.
Користувач ядра 'python3' мав перевагу перед будь-яким ядром Env 'python3'. Видаляючи його, активне середовище ядра 'python3' було відкрито і його можна було обирати кожен раз. Це виключає необхідність вручну створювати ядра. Це також має більше сенсу з точки зору розробки програмного забезпечення, де можна було б ізолювати себе в єдиному середовищі. Запуск ядра, яке відрізняється від хост-середовища, не здається природним.
Також видається, що цей користувач "python3" встановлений не для всіх за замовчуванням, тому не всі стикаються з цим питанням.
conda install ipykernel
в тому середовищі.