Podsumowanie (tldr)
Jeśli chcesz, aby jądro „python3” zawsze uruchamiało instalację Pythona ze środowiska, w którym zostało uruchomione, usuń jądro użytkownika „python3”, które ma pierwszeństwo przed tym, co ma obecne środowisko:
jupyter kernelspec remove python3
Pełne rozwiązanie
Zamierzam opublikować alternatywne i prostsze rozwiązanie dla następującego przypadku:
- Utworzyłeś środowisko conda
- W tym środowisku zainstalowano jupyter (który również instaluje ipykernel)
- Po uruchomieniu polecenia
jupyter notebook
i utworzeniu nowego notesu poprzez kliknięcie „python3” w menu rozwijanym „Nowy” ten notebook wykonuje python ze środowiska podstawowego, a nie z bieżącego.
- Chciałbyś, aby uruchomienie nowego notebooka z 'python3' w dowolnym środowisku uruchamiało wersję Pythona z tego środowiska, a NIE z bazy
Mam zamiar używać nazwy „test_env” dla środowiska do końca rozwiązania. Zauważ też, że „python3” to nazwa jądra.
Obecnie najczęściej głosowana odpowiedź działa, ale istnieje alternatywa. Mówi, aby wykonać następujące czynności:
python -m ipykernel install --user --name test_env --display-name "Python (test_env)"
To da ci możliwość korzystania ze środowiska test_env bez względu na to, z jakiego środowiska uruchomisz jupyter notebook
. Jednak uruchomienie notebooka z „python3” nadal będzie korzystało z instalacji Pythona ze środowiska podstawowego.
Prawdopodobnie dzieje się tak, że istnieje jądro użytkownika python3. Uruchom polecenie, jupyter kernelspec list
aby wyświetlić listę wszystkich środowisk. Na przykład, jeśli masz komputer Mac, otrzymasz następujące informacje (moja nazwa użytkownika to Ted).
python3 /Users/Ted/Library/Jupyter/kernels/python3
To, co robi tutaj Jupyter, to przeszukiwanie trzech różnych ścieżek w poszukiwaniu jąder. Przechodzi od użytkownika , do środowiska , do systemu . Zobacz ten dokument aby uzyskać więcej informacji na temat ścieżek, które wyszukuje dla każdego systemu operacyjnego.
Dwa powyższe jądra znajdują się na ścieżce użytkownika, co oznacza, że będą one dostępne niezależnie od środowiska, z którego uruchamiany jest notatnik jupyter. Oznacza to również, że jeśli na poziomie środowiska istnieje inne jądro „python3”, nigdy nie będzie można uzyskać do niego dostępu.
Dla mnie bardziej sensowne jest, że wybranie jądra „python3” ze środowiska, z którego uruchomiłeś notebooka, powinno uruchomić Pythona z tego środowiska.
Możesz sprawdzić, czy masz inne środowisko „python3”, patrząc na ścieżkę wyszukiwania Env dla swojego systemu operacyjnego (patrz link do dokumentów powyżej). Dla mnie (na moim komputerze Mac) wydałem następujące polecenie:
ls /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels
I rzeczywiście miałem tam wymienione jądro „python3”.
Dzięki temu komentarzowi do wydania GitHub (spójrz na pierwszą odpowiedź) możesz usunąć środowisko użytkownika „python3” za pomocą następującego polecenia:
jupyter kernelspec remove python3
Teraz, gdy uruchomisz jupyter kernelspec list
, zakładając, że test_env jest nadal aktywny, otrzymasz:
python3 /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels/python3
Zauważ, że ta ścieżka znajduje się w katalogu test_env. Jeśli utworzysz nowe środowisko, zainstalujesz jupyter, aktywujesz je i wyświetlisz listę jąder, otrzymasz kolejne jądro „python3” znajdujące się na ścieżce środowiska.
Jądro użytkownika „python3” miało pierwszeństwo przed jakimkolwiek jądrem Env „python3”. Po usunięciu jądro aktywnego środowiska „python3” zostało ujawnione i można je było wybrać za każdym razem. Eliminuje to potrzebę ręcznego tworzenia jąder. Ma to również większy sens w zakresie tworzenia oprogramowania, w którym chciałoby się odizolować w jednym środowisku. Uruchamianie jądra innego niż środowisko hosta nie wydaje się naturalne.
Wydaje się również, że ten użytkownik „python3” nie jest domyślnie instalowany dla wszystkich, więc nie wszyscy mają do czynienia z tym problemem.
conda install ipykernel
w tym środowisku.