2016-06-17 11 views
17

Znalazłem się w jakimś okropnym, wirtualnym bałaganie. Wsparcie?!Notebook jowera działa w innym env

Zarządzam środowiskiem z conda. Do niedawna miałem tylko jądro notebooka jonyter python2, ale zdecydowałem się przeciągnąć kopanie i krzyczeć do 21 wieku i zainstalować jądro python3; Zapomniałem, jak to zrobiłem.

Mój główny (anakonda) python przyjmuje wartość domyślną 2,7.

Tak więc jestem, radośnie próbuję użyć pięknej zupy z mojego nowego, błyszczącego nowego jądra python3 i nie wydaje mi się, żebym był w stanie zrobić cokolwiek, aby uzyskać dostęp do środowiska, w którym znajdują pakiety. Viz (wszystko z notatnika):

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4' 

Dobrze, zainstaluję go za pomocą magii powłoki. Dobrze? Dobrze?

! pip install bs4 

--> Collecting bs4 
    Downloading bs4-0.0.1.tar.gz 
Requirement already satisfied (use --upgrade to upgrade): beautifulsoup4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages (from bs4) 
[...] 
Successfully built bs4 
Installing collected packages: bs4 
Successfully installed bs4-0.0.1 

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4' 

O nie. Czy myśli, że jestem w 2.7 env, mimo że używam jądra python3? To nie wystarczy.

! conda info --envs 
--> # conda environments: 
# 
flaskenv     /Users/[MY-USER]/anaconda/envs/flaskenv 
mesa      /Users/[MY-USER]/anaconda/envs/mesa 
py35      /Users/[MY-USER]/anaconda/envs/py35 
root     * /Users/[MY-USER]/anaconda 

OK, mogę to naprawić. Jednym z nich jest 3,5 env.

! source activate py35 
--> prepending /Users/[MY-USER]/anaconda/envs/py35/bin to PATH 

! conda install beautifulsoup4 
--> Fetching package metadata ....... 
Solving package specifications: .......... 

# All requested packages already installed. 
# packages in environment at /Users/[MY-USER]/anaconda: 
# 
beautifulsoup4   4.4.1     py27_0 

dotyczące ...

! pip install bs4 
--> Requirement already satisfied (use --upgrade to upgrade): bs4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages 

bardziej niepokoi fakt ...

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4' 

Arrgh !!! headdesk Czy będę musiał zabić jądro, aby to naprawić (i ponownie uruchomić trochę pracy)? Czy zabicie jądra może nawet zadziałać? Jak mogę sprawdzić, w jakim środowisku jądro Jowitera działa?

dziękuję!

Odpowiedz

53

To jest podstępna część ipython/Jupyter. Zestaw dostępnych jąder jest niezależny od tego, jaki jest twój virtualenv po uruchomieniu programu jupyter Notebook. Sztuką jest ustawienie pakietu ipykernel w środowisku, które chcesz zidentyfikować w unikalny sposób dla jupytera. Od docs on multiply ipykernels,

source activate ENVNAME 
pip install ipykernel 
python -m ipykernel install --user --name ENVNAME --display-name "Python (whatever you want to call it)" 

Jeśli chcesz tylko mieć jeden kernel Python 3, ze środowiska Conda, wystarczy użyć python -m ipykernel install --user i będzie przywrócić domyślną Pythona do jednego w virtualenv.

I tak, będziesz musiał ponownie uruchomić jądro i ponownie uruchomić poprzednie kroki.

Zobacz także Using both Python 2.x and Python 3.x in IPython Notebook

+0

Dziękujemy! Pracował jak urok. –

+0

Wielkie dzięki, uratowałeś mój dzień !! –

1

@ rozwiązanie tschundler za działa perfekcyjnie jeśli w środowisku został już utworzony.

Jeśli chcesz zmienić domyślnego jądra przy tworzeniu wirtualnego środowiska i uniknąć wszelkich ręcznej konfiguracji, wystarczy dodać jupyter na końcu polecenia Conda:

conda create --name ENVNAME python=PYTHONVERSION jupyter

Poprawna Jądro zostanie użyte wtedy, gdy użyjesz ipython lub notatnik jupyter.