2015-11-03 2 views
22

Я хотел бы выполнить длинный сценарий Python из ноутбука Jupyter, чтобы я мог взломать структуры данных, созданные в середине.Выполнение скрипта Python в ноутбуке Jupyter с использованием определенного virtualenv

Сценарий имеет много зависимостей и аргументов командной строки и выполняется с определенным virtualenv. Возможно ли интерактивно запускать скрипт Python внутри ноутбука с указанным virtualenv (отличным от установки Jupyter)?

Спасибо!

+0

нет, я так не считаю. – cel

+0

Еще один способ решить вашу проблему - использовать IDE, например PyCharm. Просто выберите, какой virtualenv вы хотите использовать для своего проекта, и добавьте несколько точек останова. Когда выполнение приостанавливается на ваших контрольных точках, вы сможете запускать код python в интерактивном режиме. Вы также можете взглянуть на pdb (https://docs.python.org/3.5/library/pdb.html) – elgehelge

ответ

12

Я нашел эту ссылку, чтобы быть очень полезным:

https://ocefpaf.github.io/python4oceanographers/blog/2014/09/01/ipython_kernel/

Убедитесь, что вы пип установить jupyter в свой virtualenv. В случае, если ссылка уйдет позже, вот суть:

Вам нужно создать новое ядро. Вы указываете свое ядро ​​с файлом JSON. Ваши ядра обычно расположены по адресу ~/.ipython/kernels. Создайте каталог с именем вашего virtualenv и создайте в нем файл kernel.json. Например, один из моих путей выглядит ~./ipython/kernels/datamanip/kernel.json

Вот что мой файл kernel.json выглядит следующим образом:

{ 
    "display_name": "Data Manipulation (Python2)", 
    "language": "python", 
    "codemirror_mode": { 
    "version": 3, 
    "name":"ipython" 
    }, 
    "argv": [ 
    "/Users/ed/.virtualenvs/datamanip/bin/python", 
    "-c", 
    "from IPython.kernel.zmq.kernelapp import main; main()", 
    "-f", 
    "{connection_file}" 
    ] 
} 

Я не уверен, что именно делает объект codemirror_mode, но это, кажется, не причинить вред.

+0

Не уверен, что вы все еще на SO и активны. Есть ли вероятность, что вы можете указать ссылку, указанную вами? – David

+0

Мне пришлось вручную изменить путь для двоичного кода python к тому, который был создан для моей недавно созданной виртуальной среды. – ionox0

19

Немного более простое решение для получения ядер ноутбуков, доступных в других ноутбуках.

Я использую Linux + virtualenv + virtualenvwrapper. Если вы используете разные настройки, измените некоторые команды на соответствующие, но вы должны получить эту идею.

mkvirtualenv jupyter2 
workon jupyter2 
(jupyter2) pip install jupyter 
(jupyter2) ipython kernel install --name "jupyter2_Python_2" --user 

последняя команда создает ~/.local/share/jupyter/kernels/jupyter2\ python\ 2/ Адресной книги

же материал для 3

mkvirtualenv -p /usr/bin/python3 jupyter3 
// this uses python3 as default python in virtualenv 
workon jupyter3 
(jupyter3) pip install jupyter 
(jupyter3) ipython kernel install --name "jupyter3_Python_3" --user 

Когда сделано, вы должны видеть оба ядра, независимо от того, что окр вы используете для запуска jupyter. Вы можете удалить ссылки на ядра прямо в ~/.local/share/jupyter/kernels/. Чтобы указать местоположение, укажите параметры ipython kernel install (--help) или просто скопируйте каталоги от ~/.local/share/jupyter/kernels/ до ~/envs/jupyter3/share/jupyter, если вы хотите запускать несколько керенов только с одного ноутбука.

3

Решение для певца не работает для меня. Вот что работало:

. /path/to/virtualenv/.venv/bin/activate 
python -m ipykernel install --user --name .venv --display-name .venv 

Ссылка: Kernels for different environments (официальные документы)

+0

также в '' ipython.readthedocs'' http://ipython.readthedocs.io/en/stable/install/kernel_install.html .. для актуальной ссылки – muon

+0

Да, это актуальная ссылка, но если текст изменится, моя ссылка будет недействительной. Вот почему я дал ссылку git. –

+0

Извините, не просмотрел вашу ссылку :( – muon

15

Вот что работало для меня (не conda питона). (MacOS, заварить версия питона, если вы работаете с системой питоном, вы можете (будет) необходимо предварять каждую команду sudo)

первый реактивировать virtualenv

если начиная заново то, например,, Вы могли бы использовать virtualenvwrapper

$pip install virtualenvwrapper 
$mkvirtualenv -p python2 py2env 
$workon py2env 

# This will activate virtualenv 

(py2env)$ 

# Then install jupyter within the active virtualenv 
(py2env)$ pip install jupyter 

# jupyter comes with ipykernel, but somehow you manage to get an error due to ipykernel, then for reference ipykernel package can be installed using: 
(py2env)$ pip install ipykernel 

Далее, установите ядро ​​

(py2env)$ python -m ipykernel install --user --name testenv --display-name "Python2 (py2env)" 

затем начать jupyter ноутбук (venv не должен быть активирован для этого шага)

(py2env)$ jupyter notebook 
# or 
#$ jupyter notebook 

в jupyter выпадающее меню ноутбука: Kernel >> Change Kernel >> <list of kernels> вы должны увидеть Python2 (py2env) ядро ​​

Это также позволяет легко идентифицировать версию ядра python и поддерживать их бок о бок.

здесь ссылка детализировать документы http://ipython.readthedocs.io/en/stable/install/kernel_install.html

+0

Хороший материал здесь, спасибо. Я хотел упомянуть, что в первый раз, когда я сделал шаг установки ipykernel, этого не произошло. Не уверен, что произошло (кроме ничего). Я получил сообщение о том, что ядро ​​было создано. –

6

Это действительно просто, на основе documentation

Вы можете использовать virtualenv для IPython ноутбука. Выполните следующие шаги, на самом деле нет необходимости в шаге один, убедитесь, что вы активировали virtualenv Установите модуль ядра IPython в ваш virtualenv

workon-virtualenv-имя мое # активировать virtualenv через source ~/path-to-your-virtualenv/

  1. , если вы еще не пункта установить ipykernel

  2. (Самого важного шаг) Теперь запустите ядро ​​«самостоятельно установить» сценарий:

    python -m ipykernel install --user --name = my-virtualenv-name Заменив параметр -name соответствующим образом.

  3. Теперь вы должны увидеть свое ядро ​​в меню ноутбука IPython: Kernel -> Change kernel и иметь возможность переключиться на него (возможно, вам придется обновить страницу до ее появления в списке). IPython запомнит, какое ядро ​​использовать для этого ноутбука с этого момента.

+0

Для шага 1 вы пытаетесь установить ipython-ядро, используя пипс в вашей папке скриптов вашего виртуального env? Для шага 2 вы запускаете скрипты, используя питон.exe найден в папке скрипта вашего виртуального env? Для шага 3, из какого каталога вы должны запускать свой ноутбук? –

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