Использование Python 2.x и Python 3.x в IPython Notebook


255

Я использую записные книжки IPython и хотел бы иметь возможность выбрать создание записной книжки Python 2.x или 3.x в IPython.

У меня изначально была Анаконда. В Anaconda необходимо было изменить глобальную переменную среды, чтобы выбрать, какую версию Python вы хотите, и затем можно запустить IPython. Это не то, что я искал, поэтому я удалил Anaconda и теперь настроил мою собственную установку, используя MacPorts и PiP. Кажется, я все еще должен использовать

port select --set python <python version> 

переключаться между python 2.x и 3.x. что не лучше решения анаконды.

Есть ли способ выбрать, какую версию python вы хотите использовать после запуска записной книжки IPython, желательно с моей текущей сборкой MacPorts?


Ответы:


337

Идея здесь состоит в том, чтобы установить несколько ipythonядер. Вот инструкция для анаконды. Если вы не используете анаконду, я недавно добавил инструкции, использующие pure virtualenvs.

Анаконда> = 4.1.0

Начиная с версии 4.1.0, anaconda включает специальный пакет, nb_conda_kernelsкоторый обнаруживает среды conda с ядрами ноутбуков и автоматически регистрирует их. Это делает использование новой версии Python таким же простым, как и создание новых сред conda:

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

После перезапуска ноутбука Jupyter новые ядра становятся доступны через графический интерфейс. Обратите внимание, что новые пакеты должны быть явно установлены в новых средах. Раздел « Управление средами » в документации conda предоставляет дополнительную информацию.

Регистрация ядер вручную

Пользователи, которые не хотят использовать nb_conda_kernelsили продолжают использовать более старые версии anaconda, могут выполнить следующие шаги для ручной регистрации ядер ipython.

настроить python2.7среду:

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

настроить python3.6среду:

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

После этого вы сможете выбирать между python2
и python3при создании новой записной книжки в интерфейсе.

Кроме того , вы можете передать --nameи --display-nameопции к , ipython kernel installесли вы хотите изменить имена ваших ядер. Смотрите ipython kernel install --helpдля получения дополнительной информации.


Ваше решение очень похоже на решение, которое я в конечном итоге использовал, и в принципе я ожидал бы, что оно будет работать. Поскольку я уже удалил анаконду и получил эту работу, я не смогу проверить.
дельтап

9
Если вы хотите настроить спецификации ядра, не требуя root, вы можете ipython kernelspec install-self --userустановить их для текущего пользователя.
Томас К

1
Я понял это! Ваш ответ выручил! dropbox.com/s/6ayqf55ctkv2xgk/…
Умный Программист

7
Ключевым моментом является то, что вы должны УСТАНОВИТЬ nb_conda_kernels, которого не было в моей первоначальной Анаконде! Спасибо!
дартдог

1
@cel, действительно, среда, из которой я запускаю jupyter, по умолчанию не имеет установленного пакета nb_conda_kernels. Я не нашел времени, чтобы прочитать все комментарии: возможно, вы могли бы отредактировать свой ответ и включить римейк дартдога.
Антуан Готье

276

Если вы используете Jupyter на Python 3, вы можете настроить ядро ​​Python 2 следующим образом:

python2 -m pip install ipykernel

python2 -m ipykernel install --user

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


52
Переключите '2' на '3', если у вас уже установлен python2 и вам нужен python3. Я не понимаю, почему это не лучший ответ, он определенно выигрывает бритвой Оккама, и это сработало для меня.
словами

6
Работает отлично. Должен быть первым ответом действительно.
JSmyth

2
Команда python2 включена в сам Python? Пожалуйста, дайте подробное объяснение этого ответа. :)
verystrongjoe

3
это работает, но это не связано с моей системой Python 2 с дополнительными пакетами. Есть ли способ сделать ссылку на существующий двоичный / исполняемый файл Python?
Рутгер Хофсте

1
Отлично работает в win10, просто замените python2на your\path\to\python(2).exe.
Люсьен

42

Эти инструкции объясняют, как установить ядро ​​python2 и python3 в отдельных виртуальных средах для пользователей, не являющихся пользователями Anaconda. Если вы используете анаконду, пожалуйста, найдите мой другой ответ для решения, специально предназначенного для анаконды.

Я предполагаю, что вы уже jupyter notebookустановили.


Сначала убедитесь, что у вас есть python2и python3переводчик с pipдоступными.

В Ubuntu вы можете установить их:

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

Далее подготовьте и зарегистрируйте среды ядра

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

Чтобы упростить задачу, вы можете добавить псевдонимы оболочки для команды активации в файл конфигурации оболочки. В зависимости от используемой системы и оболочки это может быть, например ~/.bashrc, ~/.bash_profileили~/.zshrc

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

После перезапуска вашей оболочки вы можете устанавливать новые пакеты после активации среды, которую вы хотите использовать.

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

или

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

затем до точки, установил pandas, запустил jupyter, переключился на ядро ​​py3: импорт pandas завершился неудачно с ошибкой «not found». Это сводит меня с
ума

1
@ user1255933, это, вероятно, связано с установкой с неверной версией pip. Это может произойти, если активация целевой среды завершилась неудачно или не содержит версию pip. Вы можете найти мой ответ здесь интересным: stackoverflow.com/questions/32680081/… .
чел

Спасибо за инструкцию по использованию
неанакондного

37

В текущей версии Notebook / Jupyter вы можете создать ядро Python3 . После запуска нового приложения для ноутбука из командной строки с Python 2 вы должны увидеть запись «Python 3» в выпадающем меню «New». Это дает вам блокнот, использующий Python 3. Таким образом, вы можете иметь два блокнота рядом с разными версиями Python.

Детали

  1. Создайте этот каталог: mkdir -p ~/.ipython/kernels/python3
  2. Создайте этот файл ~/.ipython/kernels/python3/kernel.jsonс этим содержанием:

    {
        "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. Перезагрузите сервер ноутбука.

  4. Выберите «Python 3» из выпадающего меню «New»
  5. Работа с ноутбуком Python 3
  6. Выберите «Python 2» из выпадающего меню «New»
  7. Работа с ноутбуком Python 2

Это замечательно, и я пытаюсь заставить это работать, но не могли бы вы указать, как вы начнете jupyterв этом сценарии (я должен либо бежать, ipython notebookлибо ipython3 notebook). Прямо сейчас я могу запускать только одно или другое (с их соответствующими средами, но я вижу оба ядра, перечисленные внутри jupyter. Не могли бы вы расширить свой ответ, чтобы включить, как запустить, jupyterчтобы я мог работать python2и python3бок о бок? Спасибо!
Крис

1
Хорошо, я думаю, что я понял это - я должен был настроить kernel.jsonфайл внутри ~/Library/Jupyter/kernels/python3/(на OS X) и добавить аргументы, упомянутые в связанном файле.
Крис

@Chris Да, хотя описание ссылки дается в IPython Notebook, это можно сделать в редакторе. Просто создайте или измените файл с определенным именем по заданному пути и по указанному содержимому. Рад, что ты решил свою проблему.
Майк Мюллер

Я бы порекомендовал отредактировать ваш ответ, включив в него подробности по этой ссылке. Ответы не должны держать самую важную часть скрытой «за» ссылкой.
Крис

1
@Chris Добавил подробности по ссылке.
Майк Мюллер

22

Доступно решение, позволяющее мне сохранить установку MacPorts путем настройки спецификации ядра Ipython.

Требования:

  • MacPorts устанавливается в обычный каталог / opt
  • python 2.7 устанавливается через macports
  • python 3.4 устанавливается через macports
  • Ipython установлен для Python 2.7
  • Ipython установлен для Python 3.4

Для Python 2.x:

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

Для Python 3.x:

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

Теперь вы можете открыть записную книжку Ipython и затем выбрать записную книжку python 2.x или python 3.x.

Выбери свой питон!


Не могли бы вы подтвердить, что вы можете запускать python2и python3ноутбуки ядра параллельно в одном и том же jupyterэкземпляре? В таком случае, как именно вы начинаете jupyterне иметь противоречивых путей? В настоящее время я могу только запустить python2или python3написать код, $PATH $PYTHONPATHпредварительно настроив соответствующую среду. Можно ли как-то избежать этого?
Крис

Я могу запустить ноутбуки с ядром python2 или python3.
Дельтап

Как начать jupyter(учитывая, что он установлен для python 2.7и для python 3.4) Вы определили $ PYTHONPATH или создали какую-то виртуальную среду? Ты просто звонишь ipython notebook? Если да, то что это ipythonзначит - тот, который установлен для 2.7 или 3.4?
Крис

Я просто звоню python notebook. which ipythonпоказывает, что он указывает на/opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin/ipython
deltap

Хорошо, я разобрался с моей проблемой, и это было связано с предопределенным $PYTHONPATH, что затрудняет переключение ядер. Пришлось unset PYTHONPATHдо старта ipythonи теперь все работает.
Крис

18

Из моей установки Linux я сделал:

sudo ipython2 kernelspec install-self

И теперь мой питон 2 вернулся в список.

Ссылка:

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


ОБНОВИТЬ:

Вышеуказанный метод устарел и будет удален в будущем. Новый метод должен быть:

sudo ipython2 kernel install


2
Я ненавижу случайное вставление команд в мою установку Ubuntu, но это сработало для меня.
Иосиф

1
Должен быть выбранный ответ.
e9t

1
Вкратце и по сути, я применил это решение на Mac OS X, работает без проблем.
Конрад

1
Я перепробовал все ответы. Но это сработало для меня. Попробуйте, если вы находитесь на Ubuntu.
Синсурен

1
А где взять ipython2?
Судо

5

Ниже приведены инструкции по добавлению ядра python2 в блокнот jupyter:

откройте терминал и создайте новую среду Python 2: conda create -n py27 python=2.7

активировать среду: Linux source activate py27или Windowsactivate py27

установить ядро ​​в env: conda install notebook ipykernel

установить ядро ​​за пределами env: ipython kernel install --user

закройте env: source deactivate

Хотя поздний ответ, надеюсь, кто-то найдет это полезным: p


Это не добавляет ничего кроме того, что уже было четко указано в ответе @ cel .
Мэр

3

Используется sudo pip3 install jupyterдля установки jupyter для python3 и sudo pip install jupyterдля установки ноутбука jupyter для python2. Затем вы можете вызвать ipython kernel installкоманду, чтобы включить оба типа записной книжки в блокноте jupyter.


1

Я посмотрел на эту отличную информацию, а затем удивился , так как

  1. у меня есть Python2, Python3 и IPython все установлено,
  2. у меня установлен PyCharm,
  3. PyCharm использует IPython для своей консоли Python,

если бы PyCharm использовал

  1. IPython-py2, когда Menu> File> Settings> Project> Project Interpreter == py2 AND
  2. IPython-py3, когда Меню> Файл> Настройки> Проект> Интерпретатор проекта == py3

ОТВЕТ: Да!

PS У меня также есть Python Launcher для Windows.


0

Под Windows 7 у меня были установлены anaconda и anaconda3. Я вошел \Users\me\anaconda\Scriptsи казнил

sudo .\ipython kernelspec install-self

Затем я вошел \Users\me\anaconda3\Scriptsи казнил

sudo .\ipython kernel install

(Я получил jupyter kernelspec install-self is DEPRECATED as of 4.0. You probably want 'ipython kernel install' to install the IPython kernelspec.)

После запуска jupyter notebook(в anaconda3) у меня появилось аккуратное выпадающее меню в правом верхнем углу под заголовком «New», позволяющее мне выбирать между ядрами Python 2 odr Python 3.


0
  • Если вы используете Anaconda в виртуальной среде.
  • И когда вы создаете новый ноутбук, но я не показываю, чтобы выбрать ядро ​​виртуальной среды.
  • Затем вы должны установить его в ipykernel, используя следующую команду
$ pip install --user ipykernel
$ python -m ipykernel install --user --name=test2
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.