2016-06-17 4 views
17

Я попал в какой-то ужасный виртуальный беспорядок. Помогите?!jupyter notebook running kernel in different env

Я управляю средами с conda. До недавнего времени у меня было только ядро ​​python2 jupyter, но я решил перетащить себя и кричать в 21-й век и установить ядро ​​python3; Я забыл, как я это сделал.

Мой основной (anaconda) python по умолчанию равен 2.7.

Так вот, я, весело пытаясь использовать красивый суп из моего блестящего нового ядра python3, и, похоже, я ничего не могу сделать, чтобы добраться до любой среды, в которой он находит пакеты. Viz (все из ноутбука):

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4' 

Хорошо, я установлю его с помощью оболочки. Правильно? Правильно?

! 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' 

О нет. Думает ли он, что я нахожусь в 2,7 env, хотя я запускаю ядро ​​python3? Этого не будет.

! 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 

Хорошо, я могу это исправить. Один из них - 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 

относительно ...

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

более относительно ...

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4' 

Arrgh !!! headdesk Должен ли я убить ядро, чтобы исправить это (и перезапустить немного работы)? Убивает ли ядро ​​даже работу? Как заставить ядро ​​jupyter знать, в какой среде он должен работать?

спасибо!

ответ

53

Это сложная часть ipython/Jupyter. Набор доступных ядер не зависит от вашего виртуального пользователя, когда вы запускаете Jupyter Notebook. Трюк заключается в настройке пакета ipykernel в среде, которую вы хотите однозначно идентифицировать для jupyter. Из 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)" 

Если вы хотите иметь одного ядра Python 3, из среды Конда, просто используйте python -m ipykernel install --user и сбросит питона по умолчанию один в virtualenv.

И да, вам необходимо перезапустить ядро ​​и повторить предыдущие шаги.

Смотрите также Using both Python 2.x and Python 3.x in IPython Notebook

+0

Спасибо! Работал как шарм. –

+0

Большое спасибо, ты спас мой день! –

1

@ решение tschundler работает отлично, если среда уже создана.

Если вы хотите изменить ядро ​​по умолчанию при создании виртуальной среды и избежать ручной настройки, вам просто нужно добавить jupyter в конце команды Конда:

conda create --name ENVNAME python=PYTHONVERSION jupyter

Правильный ядро будет использоваться при использовании ipython или jupyter notebook.

Смежные вопросы