Używanie zarówno Python 2.x, jak i Python 3.x w IPython Notebook


255

Używam notesów IPython i chciałbym mieć możliwość utworzenia notesu python 2.x lub 3.x w IPython.

Początkowo miałem Anacondę. W przypadku Anacondy globalna zmienna środowiskowa musiała zostać zmieniona, aby wybrać wersję Pythona, a następnie uruchomić IPython. Nie tego szukałem, więc odinstalowałem Anacondę i teraz skonfigurowałem własną instalację za pomocą MacPorts i PiP. Wygląda na to, że nadal muszę korzystać

port select --set python <python version> 

przełączać między python 2.x a 3.x. co nie jest lepsze niż rozwiązanie anakonda.

Czy istnieje sposób, aby wybrać wersję Pythona, której chcesz używać po uruchomieniu notebooka IPython, najlepiej z moją obecną wersją MacPorts?


Odpowiedzi:


336

Chodzi tutaj o instalację wielu ipythonjąder. Oto instrukcje dla anakondy. Jeśli nie używasz anakondy, niedawno dodałem instrukcje, używając czystych virtualenvs.

Anakonda> = 4.1.0

Od wersji 4.1.0 anaconda zawiera specjalny pakiet, nb_conda_kernelsktóry wykrywa środowiska conda za pomocą jąder notebooków i automatycznie je rejestruje. Dzięki temu korzystanie z nowej wersji Pythona jest tak proste, jak tworzenie nowych środowisk Conda:

conda create -n py27 python=2.7 ipykernel
conda create -n py36 python=3.6 ipykernel

Po ponownym uruchomieniu notesu jupyter nowe jądra są dostępne w interfejsie graficznym. Pamiętaj, że nowe pakiety muszą być jawnie zainstalowane w nowych środowiskach. Sekcja Zarządzanie środowiskami w dokumentach conda zawiera dodatkowe informacje.

Ręczna rejestracja jąder

Użytkownicy, którzy nie chcą używać nb_conda_kernelsani nadal korzystać ze starszych wersji anakondy, mogą wykonać poniższe czynności, aby ręcznie zarejestrować jądra ipython.

skonfiguruj python2.7środowisko:

conda create -n py27 python=2.7
conda activate py27
conda install notebook ipykernel
ipython kernel install --user

skonfiguruj python3.6środowisko:

conda create -n py36 python=3.6
conda activate py36
conda install notebook ipykernel
ipython kernel install --user

Następnie powinieneś mieć możliwość wyboru pomiędzy python2
i python3podczas tworzenia nowego notatnika w interfejsie.

Dodatkowo możesz przekazać opcje --namei, jeśli chcesz zmienić nazwy swoich jąder. Zobacz więcej informacji.--display-nameipython kernel installipython kernel install --help


Twoje rozwiązanie wygląda bardzo podobnie do rozwiązania, z którego ostatecznie skorzystałem i zasadniczo spodziewam się, że zadziała. Ponieważ już odinstalowałem anakondę i działałem, nie będę w stanie zweryfikować.
deltap

9
Jeśli chcesz skonfigurować kernelspecs bez konieczności rootowania, możesz zrobić, ipython kernelspec install-self --useraby zainstalować je dla bieżącego użytkownika.
Thomas K

1
Zrozumiałem! Twoja odpowiedź pomogła! dropbox.com/s/6ayqf55ctkv2xgk/…
Sprytny programista

7
Kluczową rzeczą jest to, że musisz ZAINSTALOWAĆ nb_conda_kernels, ponieważ nie przyszedł z moją początkową Anacondą! Dzięki!
dartdog

1
@cel, w rzeczywistości środowisko, z którego uruchamiam jupyter, nie ma domyślnie zainstalowanego pakietu nb_conda_kernels. Nie poświęciłem czasu na przeczytanie wszystkich komentarzy: może mógłbyś edytować swoją odpowiedź i dołączyć remak dartdog'a.
Antoine Gautier

276

Jeśli korzystasz z Jupyter na Python 3, możesz skonfigurować jądro Python 2 w następujący sposób:

python2 -m pip install ipykernel

python2 -m ipykernel install --user

http://ipython.readthedocs.io/en/stable/install/kernel_install.html


52
Zamień „2” na „3”, jeśli masz już skonfigurowany Python2 i potrzebujesz Python3. Nie rozumiem, dlaczego nie jest to najlepsza odpowiedź, zdecydowanie wygrywa brzytwą Ockhama i zadziałało dla mnie.
wordsforthewise

6
Działa świetnie. Rzeczywiście powinna być pierwszą odpowiedzią.
JSmyth

2
polecenie python2 jest zawarte w samym pythonie? Proszę szczegółowo wyjaśnić tę odpowiedź. :)
verystrongjoe

3
to działa, ale nie jest powiązane z moim systemem Python 2 z dodatkowymi pakietami. Czy istnieje sposób na link do istniejącego pliku binarnego / wykonywalnego Pythona?
Rutger Hofste

1
Działa idealnie w win10, wystarczy wymienić python2z your\path\to\python(2).exe.
Lucien

42

Te instrukcje wyjaśniają, jak zainstalować jądro python2 i python3 w oddzielnych środowiskach wirtualnych dla użytkowników innych niż anakonda. Jeśli używasz anakondy, znajdź moją drugą odpowiedź na rozwiązanie bezpośrednio dostosowane do anakondy.

Zakładam, że już jupyter notebookzainstalowałeś.


Najpierw upewnij się, że masz python2a python3tłumacza z pipdostępnych.

Na Ubuntu zainstalowałbyś je poprzez:

sudo apt-get install python-dev python3-dev python-pip python3-pip

Następnie przygotuj i zarejestruj środowiska jądra

python -m pip install virtualenv --user

# configure python2 kernel
python -m virtualenv -p python2 ~/py2_kernel
source ~/py2_kernel/bin/activate
python -m pip install ipykernel
ipython kernel install --name py2 --user
deactivate

# configure python3 kernel
python -m virtualenv -p python3 ~/py3_kernel
source ~/py3_kernel/bin/activate
python -m pip install ipykernel
ipython kernel install --name py3 --user
deactivate

Aby to ułatwić, możesz dodać aliasy powłoki dla polecenia aktywacji do pliku konfiguracyjnego powłoki. W zależności od systemu i powłoki używasz, może to być na przykład ~/.bashrc, ~/.bash_profilelub~/.zshrc

alias kernel2='source ~/py2_kernel/bin/activate'
alias kernel3='source ~/py3_kernel/bin/activate'

Po zrestartowaniu powłoki możesz teraz instalować nowe pakiety po aktywacji środowiska, którego chcesz użyć.

kernel2
python -m pip install <pkg-name>
deactivate

lub

kernel3
python -m pip install <pkg-name>
deactivate

po tej kropce, zainstalowałem pandy, uruchomiłem jupyter, przełączyłem na jądro py3: import pand nie powiódł się z błędem „nie znaleziono”.
Doprowadza

1
@ user1255933, jest to prawdopodobnie spowodowane instalacją z niewłaściwą wersją pip. Może się to zdarzyć, jeśli aktywacja środowiska docelowego zakończy się niepowodzeniem lub nie zawiera wersji pip. Można znaleźć tu ciekawe moja odpowiedź: stackoverflow.com/questions/32680081/... .
cel

Dziękujemy za instrukcję korzystania z metody innej niż anakonda do instalacji jądra
mdivk,

37

W obecnej wersji programu Notebook / Jupyter możesz utworzyć jądro Python3 . Po uruchomieniu nowej aplikacji do notebooków z wiersza poleceń w Pythonie 2 w menu rozwijanym „Nowy” powinien pojawić się wpis „Python 3”. To daje ci notebook, który używa Python 3. Możesz więc mieć dwa notebooki obok siebie z różnymi wersjami Pythona.

Szczegóły

  1. Utwórz ten katalog: mkdir -p ~/.ipython/kernels/python3
  2. Utwórz ten plik ~/.ipython/kernels/python3/kernel.jsonz tą zawartością:

    {
        "display_name": "IPython (Python 3)", 
        "language": "python", 
        "argv": [
            "python3", 
            "-c", "from IPython.kernel.zmq.kernelapp import main; main()", 
            "-f", "{connection_file}"
        ], 
        "codemirror_mode": {
            "version": 2, 
            "name": "ipython"
        }
    }
  3. Uruchom ponownie serwer notebooka.

  4. Wybierz „Python 3” z menu „Nowy”
  5. Praca z notatnikiem Python 3
  6. Wybierz „Python 2” z menu „Nowy”
  7. Praca z notatnikiem Python 2

To jest świetne i staram się, aby to działało, ale czy możesz określić, jak zacząć jupyterw tym scenariuszu (albo muszę uruchomić, ipython notebookalbo ipython3 notebook). Teraz mogę tylko uruchomić jeden lub drugi (z ich środowisk, ale robię zobaczyć zarówno Jądra wymienione wewnątrz jupyter. Mógłbyś może poszerzyć swoją odpowiedź na to, jak zacząć jupytertak, że mogę uruchomić python2i python3side-by-side? Dzięki!
Chris,

1
Ok, myślę, że to wymyśliłem - musiałem dostosować kernel.jsonplik wewnątrz ~/Library/Jupyter/kernels/python3/(w OS X) i dodać argumenty wymienione w połączonym pliku.
Chris,

@Chris Tak, chociaż opis pod linkiem znajduje się w Notatniku IPython, można to zrobić w edytorze. Po prostu utwórz lub zmodyfikuj plik o określonej nazwie w podanej ścieżce i w wyświetlanej treści. Cieszę się, że rozwiązałeś swój problem.
Mike Müller,

Polecam zredagować swoją odpowiedź, aby uwzględnić szczegóły z tego linku. Odpowiedzi nie powinny ukrywać najważniejszej części „za” linkiem.
Chris

1
@Chris Dodano szczegóły z linku.
Mike Müller,

22

Dostępne jest rozwiązanie, które pozwala mi zachować instalację MacPorts, konfigurując jądro Ipython.

Wymagania:

  • MacPorts jest zainstalowany w zwykłym katalogu / opt
  • Python 2.7 jest instalowany przez Macports
  • Python 3.4 jest instalowany przez Macports
  • Ipython jest zainstalowany dla Pythona 2.7
  • Ipython jest zainstalowany dla Pythona 3.4

W przypadku python 2.x:

$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin
$ sudo ./ipython kernelspec install-self

W przypadku python 3.x:

$ cd /opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin
$ sudo ./ipython kernelspec install-self

Teraz możesz otworzyć notatnik Ipython, a następnie wybrać notatnik python 2.x lub python 3.x.

Wybierz swój python!


Czy możesz potwierdzić, że możesz uruchamiać python2i python3jądro notebooków obok siebie w tym samym jupyterprzypadku? W takim przypadku, jak dokładnie zaczynasz jupyternie mieć sprzecznych ścieżek? Obecnie mogę tylko uruchomić python2lub python3kod, konfigurując $PATH $PYTHONPATHwcześniej odpowiednie środowisko. Czy mogę jakoś tego uniknąć?
Chris,

Mogę uruchamiać zeszyty jądra python2 lub python3.
deltap

Jak zacząć jupyter(biorąc pod uwagę, że jest on zainstalowany dla python 2.7i dla python 3.4) Czy zdefiniowałeś $ PYTHONPATH lub pozyskałeś jakieś wirtualne środowisko? Po prostu dzwonisz ipython notebook? Jeśli tak, ipythonto o co chodzi - ten zainstalowany dla wersji 2.7 lub 3.4?
Chris,

Ja tylko dzwonię python notebook. which ipythonpokazuje, że wskazuje/opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin/ipython
deltap

W porządku, wymyśliłem swój problem i miał on związek ze wstępnie zdefiniowanym $PYTHONPATH, co utrudnia zmianę jądra. Musiałem to zrobić unset PYTHONPATHzanim zacząłem, ipythona teraz działa.
Chris

18

Z mojej instalacji Linuksa:

sudo ipython2 kernelspec install-self

A teraz mój python 2 jest z powrotem na liście.

Odniesienie:

http://ipython.readthedocs.org/en/latest/install/kernel_install.html


AKTUALIZACJA:

Powyższa metoda jest obecnie przestarzała i zostanie porzucona w przyszłości. Nowa metoda powinna być:

sudo ipython2 kernel install


2
Nienawidzę losowego wklejania poleceń do mojej instalacji Ubuntu, ale to zadziałało dla mnie.
Joseph,

1
Powinna być wybrana odpowiedź.
e9t

1
Krótko i do rzeczy, zastosowałem to rozwiązanie na Mac OS X, działa bez problemów.
Konrad

1
Próbowałem wszystkich odpowiedzi. Ale to zadziałało dla mnie. Spróbuj, jeśli jesteś na Ubuntu.
sinsuren,

1
A skąd mam wziąć ipython2?
sudo

5

Poniżej znajdują się kroki, aby dodać jądro python2 do notatnika jupyter:

otwórz terminal i utwórz nowe środowisko Python 2: conda create -n py27 python=2.7

aktywuj środowisko: Linux source activate py27lub Windowsactivate py27

zainstaluj jądro w env: conda install notebook ipykernel

zainstaluj jądro poza env: ipython kernel install --user

zamknij środowisko: source deactivate

Chociaż późna odpowiedź ma nadzieję, że ktoś uzna ją za przydatną: str


To nie dodaje niczego poza to, co zostało już jasno określone w odpowiedzi na @ cel .
merv

3

Służy sudo pip3 install jupyterdo instalowania jupyter dla python3 i sudo pip install jupyterdo instalowania notesu jupyter dla python2. Następnie możesz wywołać ipython kernel installpolecenie, aby umożliwić obu typom notebooków wybór w notatniku jupyter.


1

Spojrzałem na tej doskonałej informacji, a potem zastanawiał , gdyż

  1. Mam zainstalowane wszystkie Python2, Python3 i IPython,
  2. mam zainstalowany PyCharm,
  3. PyCharm używa IPython do swojej konsoli Python,

jeśli PyCharm skorzystałby

  1. IPython-py2 gdy Menu> Plik> Ustawienia> Projekt> Interpreter projektu == py2 ORAZ
  2. IPython-py3 gdy Menu> Plik> Ustawienia> Projekt> Interpreter projektu == py3

ODPOWIEDŹ: Tak!

PS Mam również zainstalowany Python Launcher dla Windows.


0

Pod Windows 7 miałem anaconda i anaconda3 zainstalowane. Wszedłem \Users\me\anaconda\Scriptsi straciłem

sudo .\ipython kernelspec install-self

potem wszedłem \Users\me\anaconda3\Scriptsi straciłem

sudo .\ipython kernel install

(Mam jupyter kernelspec install-self is DEPRECATED as of 4.0. You probably want 'ipython kernel install' to install the IPython kernelspec.)

Po uruchomieniu jupyter notebook(w anaconda3) dostałem porządne menu rozwijane w prawym górnym rogu pod „Nowym”, pozwalając mi wybierać między jądrem Python 2 a jądrem Python 3.


0
  • Jeśli korzystasz z anakondy w środowisku wirtualnym.
  • A kiedy tworzysz nowy notatnik, ale nie pokazuję, aby wybrać jądro środowiska wirtualnego.
  • Następnie musisz ustawić go w ipykernel za pomocą następującego polecenia
$ pip install --user ipykernel
$ python -m ipykernel install --user --name=test2
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.