Всем привет!

Сегодня мы разберем очень короткий, но полезный лайфхак о том, что нужно сделать, чтобы не вводить, к примеру, «import pandas as pd» по 10 раз в день.

Также не будем забывать, и автоматизировать и сокращать всё эффективно:

image

Для нашего лайфхака нужно:

  1. Перейти к ~/.ipython/profile_default;
  2. Создать папку с именем startup, если ее там еще нет;
  3. Добавить новый файл Python с именем start.py;
  4. Поместите ваш любимый импорт в этот файл;
  5. Запустить IPython или Jupyter Notebook, и ваши любимые библиотеки будут автоматически загружаться каждый раз!

Для наглядности, давайте всё визуализируем. Во-первых, местоположение start.py:

image

Здесь содержимое моего файла start.py:

import pandas as pd
import numpy as np

# Pandas options
pd.options.display.max_columns = 30
pd.options.display.max_rows = 20

from IPython import get_ipython
ipython = get_ipython()

# If in ipython, load autoreload extension
if 'ipython' in globals():
    print('\nWelcome to IPython!')
    ipython.magic('load_ext autoreload')
    ipython.magic('autoreload 2')

# Display all cell outputs in notebook
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'

# Visualization
import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import iplot, init_notebook_mode
init_notebook_mode(connected=True)
import cufflinks as cf
cf.go_offline(connected=True)
cf.set_config_file(theme='pearl')

print('Your favorite libraries have been loaded.')

Теперь, когда я запускаю сеанс IPython, я вижу:

image

Также, мы можем подтвердить, что библиотеки были загружены, проверяя globals ():

globals()['pd']
<module 'pandas' from '/usr/local/lib/python3.6/site-packages/pandas/__init__.py'>
globals()['np']
<module 'numpy' from '/usr/local/lib/python3.6/site-packages/numpy/__init__.py'>

На этом всё. Теперь мы можем использовать наш интерактивный сеанс без необходимости вводить команды для загрузки этих библиотек!

На заметку


  • Файл может быть назван как угодно (start.py просто легко запомнить), а также вы можете иметь несколько файлов startup/. Они выполняются в лексикографическом порядке при запуске IPython.
  • Если вы выполняете это в Jupyter, вы не получите ячейку с данными импорта, поэтому при совместном использовании Jupyter обязательно скопируйте содержимое start.py в первую ячейку. Это позволит людям узнать, какие библиотеки вы используете.
  • Если вы работаете на нескольких компьютерах, вам придется повторить шаги. Убедитесь, что вы используете тот же скрипт start.py, чтобы получить тот же импорт!
  • Спасибо ответу из Stack Overflow и официальной документации.

Если у кого-то есть, что дополнить или поделиться лайфхаками — пишите в комментариях.

Всем знаний!
Подпишитесь на канал «Нейрон» в Телеграме (@neurondata) ? там свежие статьи и новости из мира науки о данных появляются каждую неделю. Спасибо всем, кто помогает и делится полезными ссылками, особенно Виталию Орешкину и Андрею Бондаренко.

Комментарии (2)


  1. lair
    26.05.2019 01:08

    … а потом вы чекините свой ноутбук в версионник, его забирает коллега — и у того ничего не работает. Кру-то!


    (да, я знаю, что в статье написано "скопируйте", ну так и какой тогда смысл?)


  1. sin-mike
    26.05.2019 07:32

    У этого несколько минусов
    1. Не работает для совместной работы
    2. Неудобно для многих окружений, потому что этот стартап файл привязан к конкретному ipython, поэтому в самом файле надо чекать окружение, в котором запускается
    3. Если что-то валится в середине стартапа, то он это делает бесшумно

    В общем, для воспроизводимости туда удобно засовывать только стандартные вещи, которые есть «у всех»: sys, os, %matplotlib notebook

    ps: файл может называется .ipy и в него можно засовывать magic-команды