Python 을 실행 하 는 신기 Jupyter Notebook 에 대한 자세 한 설명

8566 단어 pythonjupyternotebook
Jupyter Notebook
Jupyter 프로젝트 는 Ipython 프로젝트 에서 나 뉘 어 져 있 으 며,Ipython 3.x 이전에 그들 두 사람 은 함께 발표 되 었 다.Ipython 4.x 이후 Jupyter 는 하나의 단독 프로젝트 로 개발 하고 관리 합 니 다.Jupyter 는 Python 프로그램 뿐만 아니 라 다른 프로 세 스 프로 그래 밍 언어 도 실행 할 수 있 기 때문이다.
Jupyter Notebook 은 세 부분 을 포함 하고 첫 번 째 부분 은 웹 응용 프로그램 으로 상호작용 인터페이스 를 제공 하 며 상호작용 인터페이스 에서 해당 하 는 코드 를 실행 할 수 있 습 니 다.

위의 그림 은 NoteBook 의 인 터 랙 션 인터페이스 로 문 서 를 편집 하고 실행 할 수 있 습 니 다.
주요 기능 은 다음 과 같다.
4.567917.브 라 우 저 에서 코드 편집 을 하고 자동 문법 이 강조 되 며 들 여 쓰기 와 탭 문자 완성/자체 검사 기능 을 수행 합 니 다4.567917.브 라 우 저 에서 코드 를 실행 하 는 능력 을 계산 결 과 를 코드 생 성 에 추가 합 니 다
  • HTML,LaTeX,PNG,SVG 등 부 매체 표 시 를 사용 하여 계산 결 과 를 나타 낸다.예 를 들 어 matplotlib 라 이브 러 리 렌 더 링 을 포함 한 출판 품질 을 가 진 도형 을 내장 할 수 있 습 니 다
  • 4.567917.Markdown 태그 언어 를 사용 하여 브 라 우 저 에서 부 텍스트 를 편집 하 는 것 은 일반 텍스트 에 만 국한 되 지 않 습 니 다
  • LaTeX 를 사용 하여 markdown 단원 에 수학 기 호 를 쉽게 포함 하 는 능력 을 MathJax 로 컬 로 보 여 줍 니 다
  • 두 번 째 부분 은 바로 NoteBook 의 문서 입 니 다.이 문 서 는 실행 할 코드 와 설명 정 보 를 저장 합 니 다.일반적으로 이 문 서 는.ipynb 의 접미사 로 저 장 됩 니 다.
    notebook 문 서 는 json 형식 으로 저장 되 고 base 64 로 인 코딩 됩 니 다.제 이 슨 을 사용 하 는 장점 은 서로 다른 서버 에서 데이터 의 상호작용 을 편리 하 게 할 수 있다 는 것 이다.
    노트북 documens 에 서 는 실행 가능 한 코드 파일 외 에 설명 등 해석 적 인 내용 을 저장 하여 코드 와 해석 내용 을 완벽 하 게 결합 시 켜 학습 노트 로 사용 하기에 특히 적합 하 다.
    노트북 은 nbconvert 명령 을 통 해 HTML,reStructuredText,LaTeX,PDF 등 다양한 정적 형식 으로 내 보 낼 수 있 습 니 다.
    또한 문 서 는 인터넷 에서 편리 하 게 공유 할 수 있다.
    세 번 째 부분 은 코드 가 실행 되 는 핵심 Kernels 입 니 다.서로 다른 Kernels 조합 을 통 해 notebook 은 다양한 프로그램 을 실행 할 수 있 습 니 다.예 를 들 어 파 이 썬,자바,go,R,ruby,nodejs 등 이다.
    이 Kernels 와 notebook 사 이 는 JSon 형식 으로 MQ 를 통 해 통신 된다.
    노트북 서버 시작
    문서 가 있 으 면 문 서 를 실행 하려 면 notebook server 를 시작 해 야 합 니 다.
    jupyter notebook
    기본적으로 아래 URL 이 열 립 니 다:http://127.0.0.1:8888
    시작 할 때 열 파일 을 지정 할 수 있 습 니 다.ipynb 파일:
    jupyter notebook my_notebook.ipynb
    구체 적 인 notebook 인터페이스의 조작 은 여기 서 더 이상 소개 하지 않 고 기본적으로 일반적인 컴 파일 러 와 차이 가 많 지 않다.모두 스스로 탐색 할 수 있다.
    notebook document 의 구조
    notebook 에는 여러 개의 cells 가 포함 되 어 있 으 며,각각 cell 에는 여러 줄 의 텍스트 입력 필드 가 포함 되 어 있 으 며,Shift-enter 나 도구 모음 에 있 는 재생 단 추 를 통 해 코드 를 실행 할 수 있 습 니 다.
    이곳 의 cell 은 세 가지 유형 이 있 는데 그것 이 바로 codecells,markdown cells 와 raw cells 이다.
    code cells
    코드 단원 은 새 코드 를 편집 하고 작성 할 수 있 으 며,완전한 문법 과 탭 문 자 를 강조 할 수 있 습 니 다.프로 그래 밍 언어 는 커 널 에 달 려 있 습 니 다.기본 커 널(IPython)에서 Python 코드 를 실행 합 니 다.
    코드 유닛 을 실행 할 때 포 함 된 코드 는 노트북 과 연 결 된 커 널 로 보 냅 니 다.그리고 이 계산 에서 돌아 온 결 과 는 노트 에 셀 의 출력 으로 표 시 됩 니 다.출력 은 텍스트 뿐만 아니 라 matplotlib 그래 픽 과 HTML 표(예 를 들 어 pandas 데이터 분석 패키지 에서 사용 하 는 표)를 포함 하여 가능 한 출력 형식 도 많이 있 습 니 다.
    우 리 는 codecells 의 예 를 보 았 다.
    
    #%%
    
    import numpy as np
    my_arr = np.arange(1000000)
    my_list = list(range(1000000))
    각 칸 은\#%%%로 구 분 됩 니 다.
    Ipython 자 체 는 HTML,JSON,PNG,JPEG,SVG,LaTeX 등 다양한 부 텍스트 의 전시 형식 도 지원 합 니 다.
    Ipython 은 display 방법 을 제공 합 니 다.display 를 사용 하여 보 여줄 대상 을 보 여 줍 니 다.
    
    from IPython.display import display
    display(obj)는 이 대상 의 모든 가능 한 전시 유형 을 찾 아 가장 적합 한 유형 을 선택 하여 보 여 주 며 결 과 를 노트북 문서 에 저장 합 니 다.
    특정 유형의 대상 을 보 여주 고 싶다 면 이렇게 할 수 있다.
    
    from IPython.display import (
        display_pretty, display_html, display_jpeg,
        display_png, display_json, display_latex, display_svg
    )
    그림 을 보 여 주 는 예 를 들 어:
    
    from IPython.display import Image
    i = Image(filename='../images/ipython_logo.png')
    i
    display(i)
    위의 예 에서 i 는 Image 대상 을 포함 하고 i 를 직접 호출 하면 보 여 줍 니 다.우리 도 표시 할 수 있 는 호출 display(i)를 보 여 줍 니 다.
    다른 부 텍스트 형식 은 Image 를 참고 할 수 있 으 며 사용 방법 은 모두 유사 하 다.
    markdown cells
    markdown 은 간단 하고 사용 범위 가 넓 기 때문에 notebook document 도 markdown 의 문법 을 지원 합 니 다.
    먼저 markdown cell 의 예 를 보 세 요.
    
    #%% md
    
    ```python
    $ python
    Python 3.6.0 | packaged by conda-forge | (default, Jan 13 2017, 23:17:12)
    [GCC 4.8.2 20140120 (Red Hat 4.8.2-15)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> a = 5
    >>> print(a)
    5
    ```
    markdown 의 문법 은 notebook 에서 모두 사용 할 수 있 습 니 다.
    표준 LaTeX 와 AMS-LaTeX 문법 도 지원 한다.
    raw cells
    원본 셀 은 출력 에 직접 쓸 수 있 는 위 치 를 제공 합 니 다.notebook 은 원본 셀 의 내용 을 계산 하지 않 습 니 다.
    Jupyter Notebooks 모듈 로 가 져 오기
    때때로 우 리 는 모듈 형식 으로 Jupyter Notebooks 를 가 져 오 기 를 원 하지만 안 타 깝 게 도 Jupyter Notebooks 는 표준 python 프로그램 이 아니 지만 Python 은 갈고리 프로그램 을 제공 하여 우리 가 쉽게 가 져 올 수 있 도록 합 니 다.
    우선 기본 API 를 가 져 와 야 합 니 다.
    
    import io, os, sys, types
    
    from IPython import get_ipython
    from nbformat import read
    from IPython.core.interactiveshell import InteractiveShell
    다음은 Notebook Finder 를 sys.meta 에 등록 해 야 합 니 다.path:
    
    sys.meta_path.append(NotebookFinder())
    이 노트북 파 인 더 는 정 의 된 갈고리 입 니 다.
    Notebook Finder 의 정 의 를 살 펴 보 겠 습 니 다.
    
    class NotebookFinder(object):
        """Module finder that locates Jupyter Notebooks"""
        def __init__(self):
            self.loaders = {}
    
        def find_module(self, fullname, path=None):
            nb_path = find_notebook(fullname, path)
            if not nb_path:
                return
    
            key = path
            if path:
                # lists aren't hashable
                key = os.path.sep.join(path)
    
            if key not in self.loaders:
                self.loaders[key] = NotebookLoader(path)
            return self.loaders[key]
    안에 두 가지 중요 한 방법 을 사 용 했 습 니 다.findnotebook 은 notebook 과 notebook Loader 를 찾 아 notebook 을 불 러 옵 니 다.
    findnotebook 의 정의:
    
    def find_notebook(fullname, path=None):
        """find a notebook, given its fully qualified name and an optional path
    
        This turns "foo.bar" into "foo/bar.ipynb"
        and tries turning "Foo_Bar" into "Foo Bar" if Foo_Bar
        does not exist.
        """
        name = fullname.rsplit('.', 1)[-1]
        if not path:
            path = ['']
        for d in path:
            nb_path = os.path.join(d, name + ".ipynb")
            if os.path.isfile(nb_path):
                return nb_path
            # let import Notebook_Name find "Notebook Name.ipynb"
            nb_path = nb_path.replace("_", " ")
            if os.path.isfile(nb_path):
                return nb_path
    Notebook Loader 의 정 의 를 보십시오:
    
    class NotebookLoader(object):
        """Module Loader for Jupyter Notebooks"""
        def __init__(self, path=None):
            self.shell = InteractiveShell.instance()
            self.path = path
    
        def load_module(self, fullname):
            """import a notebook as a module"""
            path = find_notebook(fullname, self.path)
    
            print ("importing Jupyter notebook from %s" % path)
    
            # load the notebook object
            with io.open(path, 'r', encoding='utf-8') as f:
                nb = read(f, 4)
    
    
            # create the module and add it to sys.modules
            # if name in sys.modules:
            #    return sys.modules[name]
            mod = types.ModuleType(fullname)
            mod.__file__ = path
            mod.__loader__ = self
            mod.__dict__['get_ipython'] = get_ipython
            sys.modules[fullname] = mod
    
            # extra work to ensure that magics that would affect the user_ns
            # actually affect the notebook module's ns
            save_user_ns = self.shell.user_ns
            self.shell.user_ns = mod.__dict__
    
            try:
              for cell in nb.cells:
                if cell.cell_type == 'code':
                    # transform the input to executable Python
                    code = self.shell.input_transformer_manager.transform_cell(cell.source)
                    # run the code in themodule
                    exec(code, mod.__dict__)
            finally:
                self.shell.user_ns = save_user_ns
            return mod
    그들 이 있 으 면 우 리 는 직접 import 우리 가 작성 한 notebook 을 만 들 수 있 습 니 다.
    이상 은 Python 을 실행 하 는 신기 Jupyter Notebook 의 상세 한 내용 입 니 다.Python 을 실행 하 는 신기 Jupyter Notebook 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!

    좋은 웹페이지 즐겨찾기