Altair: укажите рендерер, который включен по умолчанию - PullRequest
3 голосов
/ 22 февраля 2020

Есть ли способ включить рендерер, кроме вызова alt.renderers.enable('mimebundle') в коде? Так что, если пользователь импортирует altair, ему не нужно выполнять никаких дополнительных действий?

Например, на графике вы можете установить переменную окружения PLOTLY_RENDERER=plotly_mimetype. Есть ли что-то подобное в Альтаире?

1 Ответ

2 голосов
/ 22 февраля 2020

Нет, у Altair в настоящее время нет никакого механизма для указания средства визуализации, кроме вызова alt.renderers.enable.

Но если вы используете Jupyter, вы можете предоставить стартовый скрипт I Python, который делает это; например, вы можете создать файл по пути ~/.ipython/profile_default/startup/start.py со следующим содержимым:

import altair
altair.renderers.enable('notebook')

, и он будет выполнен в начале любого сеанса Jupyter / I Python.

Если вы не хотите sh импортировать Altair в каждом сеансе, вы можете вместо этого определить в этом файле Python ловушку для импорта , которая будет выполнять пользовательский код при первом импорте Altair. Например, это может выглядеть примерно так:

import imp
import os
import sys

class _AltairImportHook(object):
  def find_module(self, fullname, path=None):
    if fullname != 'altair':
      return None
    self.module_info = imp.find_module(fullname, path)
    return self

  def load_module(self, fullname):
    """Loads Altair normally and runs pre-initialization code."""
    previously_loaded = fullname in sys.modules
    altair = imp.load_module(fullname, *self.module_info)

    if not previously_loaded:
      try:
        altair.renderers.enable('notebook')
      except:
        pass
    return altair

sys.meta_path = [_AltairImportHook()] + sys.meta_path
...