[python] IPython Notebook에서 자동으로 % matplotlib 인라인 실행

IPython Notebook을 시작할 때마다 실행하는 첫 번째 명령은

%matplotlib inline

IPython을 시작할 때 자동으로이 모드가되도록 구성 파일을 변경하는 방법이 있습니까?



답변

구성 방법

IPython에는 구성을위한 프로필이 있습니다 ~/.ipython/profile_*. 기본 프로필은라고 profile_default합니다. 이 폴더에는 두 가지 기본 구성 파일이 있습니다.

  • ipython_config.py
  • ipython_kernel_config.py

matplotlib에 대한 인라인 옵션을 다음에 추가하십시오 ipython_kernel_config.py.

c = get_config()
# ... Any other configurables you want to set
c.InteractiveShellApp.matplotlib = "inline"

matplotlib 대 pylab

%pylab인라인 플로팅을 얻기 위해를 사용 하지 않는 것이 좋습니다 .

그것은 당신이 필요로하지 않는 모든 종류의 총알을 당신의 네임 스페이스에 도입합니다.

%matplotlib반면에 네임 스페이스를 삽입하지 않고도 인라인 플로팅이 가능합니다. matplotlib 및 numpy를 가져 오려면 명시 적 호출을 수행해야합니다.

import matplotlib.pyplot as plt
import numpy as np

수입품을 명시 적으로 입력하는 작은 비용은 이제 재현 가능한 코드가 있다는 사실로 완전히 극복되어야합니다.


답변

원하는 것은 명령 줄에서 다음을 실행하는 것입니다.

ipython notebook --matplotlib=inline

매번 cmd 줄에 입력하는 것을 좋아하지 않는다면 별칭을 만들어 자동으로 수행 할 수 있습니다.


답변

설정은 Jupyter 5.X아래 코드를 추가하여 이상 에서 비활성화되었습니다.

pylab = Unicode('disabled', config=True,
    help=_("""
    DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib.
    """)
)

@observe('pylab')
def _update_pylab(self, change):
    """when --pylab is specified, display a warning and exit"""
    if change['new'] != 'warn':
        backend = ' %s' % change['new']
    else:
        backend = ''
    self.log.error(_("Support for specifying --pylab on the command line has been removed."))
    self.log.error(
        _("Please use `%pylab{0}` or `%matplotlib{0}` in the notebook itself.").format(backend)
    )
    self.exit(1)

그리고 이전 버전에서는 주로 경고였습니다. 그러나 Jupyter가 개념을 사용 kernels하고 아래 명령을 실행하여 프로젝트의 커널을 찾을 수 있기 때문에 이것은 큰 문제가 아닙니다.

$ jupyter kernelspec list
Available kernels:
  python3    /Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3

이것은 커널 폴더의 경로를 제공합니다. 이제 /Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3/kernel.json파일을 열면 아래와 같은 것이 보입니다.

{
 "argv": [
  "python",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}",
 ],
 "display_name": "Python 3",
 "language": "python"
}

따라서 커널을 시작하기 위해 실행되는 명령을 볼 수 있습니다. 따라서 아래 명령을 실행하면

$ python -m ipykernel_launcher --help
IPython: an enhanced interactive Python shell.

Subcommands
-----------

Subcommands are launched as `ipython-kernel cmd [args]`. For information on
using subcommand 'cmd', do: `ipython-kernel cmd -h`.

install
    Install the IPython kernel

Options
-------

Arguments that take values are actually convenience aliases to full
Configurables, whose aliases are listed on the help line. For more information
on full configurables, see '--help-all'.

....
--pylab=<CaselessStrEnum> (InteractiveShellApp.pylab)
    Default: None
    Choices: ['auto', 'agg', 'gtk', 'gtk3', 'inline', 'ipympl', 'nbagg', 'notebook', 'osx', 'pdf', 'ps', 'qt', 'qt4', 'qt5', 'svg', 'tk', 'widget', 'wx']
    Pre-load matplotlib and numpy for interactive use, selecting a particular
    matplotlib backend and loop integration.
--matplotlib=<CaselessStrEnum> (InteractiveShellApp.matplotlib)
    Default: None
    Choices: ['auto', 'agg', 'gtk', 'gtk3', 'inline', 'ipympl', 'nbagg', 'notebook', 'osx', 'pdf', 'ps', 'qt', 'qt4', 'qt5', 'svg', 'tk', 'widget', 'wx']
    Configure matplotlib for interactive use with the default matplotlib
    backend.
...
To see all available configurables, use `--help-all`

이제 kernel.json파일을 다음과 같이 업데이트 하면

{
 "argv": [
  "python",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}",
  "--pylab",
  "inline"
 ],
 "display_name": "Python 3",
 "language": "python"
}

그리고 jupyter notebook그래프를 실행 하면 자동으로inline

자동 인라인

아래 방법도 여전히 작동하며 아래 경로에 파일을 생성합니다.

~ / .ipython / profile_default / ipython_kernel_config.py

c = get_config()
c.IPKernelApp.matplotlib = 'inline'

그러나이 접근 방식의 단점은 이것이 파이썬을 사용하는 모든 환경에 글로벌 영향을 미친다는 것입니다. 한 번의 변경으로 환경 전반에서 공통된 동작을 유지하려는 경우에도 이점으로 간주 할 수 있습니다.

따라서 요구 사항에 따라 사용할 접근 방식을 선택하십시오.


답변

ipython_config.py파일에서 다음 행을 검색 하십시오.

# c.InteractiveShellApp.matplotlib = None

# c.InteractiveShellApp.pylab = None

주석을 제거하십시오. 그런 다음 None사용중인 백엔드 (I use 'qt4')로 변경하고 파일을 저장합니다. IPython을 다시 시작하면 matplotlib 및 pylab dir()이로 드되어야합니다. 명령을 사용하여 전역 네임 스페이스에있는 모듈을 확인할 수 있습니다 .


답변

(현재) IPython 3.2.0 (Python 2 또는 3)

숨겨진 폴더 .ipython에서 구성 파일을 엽니 다.

~/.ipython/profile_default/ipython_kernel_config.py

다음 줄을 추가하십시오

c.IPKernelApp.matplotlib = 'inline'

바로 추가

c = get_config()


답변

@Kyle Kelley 및 @DGrady 외에도 다음 항목에서 찾을 수있는 항목이 있습니다.

$HOME/.ipython/profile_default/ipython_kernel_config.py (또는 생성 한 프로필)

변화

# Configure matplotlib for interactive use with the default matplotlib backend.
# c.IPKernelApp.matplotlib = none

# Configure matplotlib for interactive use with the default matplotlib backend.
c.IPKernelApp.matplotlib = 'inline'

그러면 ipython qtconsole 및 노트북 세션 모두에서 작동합니다.


답변

포함에 .py파일을 만듭니다.~/.ipython/profile_default/startup/

get_ipython().magic('matplotlib inline')