향상된 노트북 경험을 위한 JupyterLab II

2024. 2. 2. 17:44python/intermediate

마크다운 편집기 사용

다른 사람이 사용할 수 있도록 프로그램을 작성할 때는 사용자가 이해하고 다른 개발자가 유지할 수 있도록 문서화하는 것이 중요합니다. 문서는 또한 프로그램이 어떻게 작동하는지 기억할 수 있도록 나중에 참고할 수 있는 역할도 합니다.

다양한 도구를 사용하여 문서를 작성할 수 있지만 가장 일반적인 도구는 Markdown 언어 입니다. Markdown은 편집 가능한 형식의 문서를 만들 수 있는 사용자 친화적인 마크업 언어입니다. JupyterLab은 Markdown 편집기와 뷰어를 제공합니다. 그러나 대부분의 다른 버전과 달리 JupyterLab 버전에서는 Markdown 파일에 배치한 모든 코드 조각을 실행할 수도 있습니다.

이제 Markdown에 대해 미리 알아볼 시간입니다.

마크다운 문서 생성 및 미리보기

새 Markdown 파일을 만들려면 Launcher 페이지가 표시되는지 확인하세요. 그렇지 않은 경우 기존 열려 있는 콘텐츠 탭 옆에 있는 + 기호를 클릭하면 새 실행기가 나타납니다. 그런 다음 보라색 Markdown 파일 아이콘을 클릭합니다.

 

이제 빈 Markdown 파일을 보게 될 것입니다. 해당 탭을 마우스 오른쪽 버튼으로 클릭하고 이름을 Handling Exceptions.md으로 바꿉니다. 이제 콘텐츠를 추가할 차례입니다.

이 예에서는 Python이 예외를 처리하는 방법을 설명하는 간단한 메모를 제공합니다. 이를 통해 몇 가지 기본 서식을 연습할 수 있습니다. 또한 일부 코드를 추가하고 Markdown 파일 내에서 실행합니다.

마크다운은 그다지 복잡하지 않지만 형식화된 출력이 어떻게 보일지 확인하는 데 여전히 도움이 됩니다. Jupyter를 사용하면 Markdown 미리 보기를 표시하여 Markdown을 입력할 때 이 작업을 수행할 수 있습니다. 미리보기는 Markdown 파일과 자동으로 동기화되어 작성하는 동안 최종 제품이 어떻게 보일지 확인할 수 있습니다.

Markdown 미리 보기를 열려면 빈 Markdown 파일을 마우스 오른쪽 버튼으로 클릭하고 Show Markdown Preview를 선택합니다 .

 

 

보시다시피 두 번째 미리보기 창이 Markdown 파일 오른쪽에 나타납니다. Markdown 파일에 콘텐츠를 추가하지 않았으므로 비어 있습니다. 이제 이 문제를 해결하고 JupyterLab의 동기화 기능에 대한 또 다른 예를 살펴보겠습니다. Markdown 파일에 다음을 추가하기로 결정했습니다.

 

Markdown Text

# Dealing With Exceptions

## What is an Exception?

An **Exception** gets **raised** when code encounters an occasional,
but not unexpected, error. Although exceptions are an unavoidable
part of software, because you are aware that exceptions may occur,
you should write code to deal with or **handle** them.
Unhandled exceptions will cause a program to crash.

## How Do You Handle Them?

You implement [*exception handling*](https://realpython.com/python-exceptions/)
to handle exceptions. In its most basic form, this provides both a *try*
and one or more *except* blocks:

* The *try* block contains the code you wish to monitor for exceptions.
Any exceptions raised within *try* will be eligible for handling.

* One or more *except* blocks are where you define code that will run
when exceptions occur and handle them. This is how you stop the exception
from crashing the code.

## What Are Some Common Exceptions

The Python language supports more than sixty common exceptions.
Two of the more common are:

| Exception             | Cause                                       |
|:----------------------|:--------------------------------------------|
| **ZeroDivisionError** | Raised when you attempt to divide by zero   |
| **ValueError**        | Raised when you pass an inappropriate value |

## Example

```python
try:
    first_number = float(input("Enter your first number"))
    second_number = float(input("Enter your second number"))
    print(f"{first_number} / {second_number} = {first_number / second_number}")
except ZeroDivisionError:
    print("You can't divide by zero")
except ValueError:
    print("You must supply a number")
``` 

 

이러한 문자 중 일부가 이상하게 보이더라도 걱정하지 마십시오. 아래에서 그 의미를 배우게 됩니다. 그동안 모든 항목을 올바르게 입력했다면 마크다운 및 미리보기는 다음과 같습니다.

Dealing With Exceptions

What is an Exception?

An Exception gets raised when code encounters an occasional, but not unexpected, error. Although exceptions are an unavoidable part of software, because you are aware that exceptions may occur, you should write code to deal with or handle them. Unhandled exceptions will cause a program to crash.

How Do You Handle Them?

You implement exception handling to handle exceptions. In its most basic form, this provides both a try and one or more except blocks:

  • The try block contains the code you wish to monitor for exceptions. Any exceptions raised within try will be eligible for handling.
  • One or more except blocks are where you define code that will run when exceptions occur and handle them. This is how you stop the exception from crashing the code.

What Are Some Common Exceptions

The Python language supports more than sixty common exceptions. Two of the more common are:

ExceptionCause
ZeroDivisionError Raised when you attempt to divide by zero
ValueError Raised when you pass an inappropriate value

Example

try:
    first_number = float(input("Enter your first number"))
    second_number = float(input("Enter your second number"))
    print(f"{first_number} / {second_number} = {first_number / second_number}")
except ZeroDivisionError:
    print("You can't divide by zero")
except ValueError:
    print("You must supply a number")
```                                                                                      .

출력과 위에 표시된 내용 사이에 차이점이 있는 경우 돌아가서 Markdown 소스를 주의 깊게 확인하세요.

Markdown 기호를 사용한 방법은 다음과 같습니다.

  • 제목을 만들려면 하나 이상의 # 문자를 사용했습니다. 단일 #은 제목을 생성하고 ##는 하위 제목을 생성합니다.
  • 텍스트를 굵게 표시하려면 **로 묶었습니다. 텍스트를 이탤릭체로 표시하려면 *로 묶었습니다.
  • 하이퍼링크를 만들려면 링크 텍스트를 [] 안에, URL을 () 안에 넣었습니다. 마크다운에서 예외 처리 링크 텍스트를 클릭하면 독자가 해당 주제에 대한 튜토리얼로 이동합니다.
  • 테이블을 생성하려면 데이터를 |으로 분리하고 왼쪽 정렬을 지정하는 데 :-를 사용했습니다.
  • 코드 블록을 정의하려면, 삼중 백틱(```)과 python, 그리고 코드 블록 끝에 또 다른 삼중 백틱 세트 사이에 코드를 넣습니다. 이렇게 하면 형식이 깔끔하게 정리될 뿐만 아니라 상자 내부를 클릭하여 코드를 실행할 수도 있습니다.

보시다시피 몇 가지 일반적인 Markdown 구문을 사용하여 깔끔한 형식의 문서를 빠르게 만들 수 있습니다. 이는 대부분의 요구 사항을 충족할 가능성이 높지만 필요한 경우 더 많은 관련 서식 옵션을 사용할 수 있습니다. 그러나 Markdown 작성은 JupyterLab에서 Markdown 파일로 수행할 수 있는 유일한 작업이 아닙니다.

마크다운 파일에 포함된 코드 실행

기본 Markdown은 프로그램 코드에 대한 정보를 제공하는 데 적합하지만 JupyterLab은 한 단계 더 나아가 여기에 포함된 코드를 실행할 수 있습니다. 이는 코드가 기대한 대로 작동하는지 확인하는 좋은 방법입니다.

코드 블록에서 코드를 실행하려면 코드를 실행할 콘솔을 생성해야 합니다. 이렇게 하려면 Markdown 파일의 아무 곳이나 마우스 오른쪽 버튼으로 클릭하고 메뉴에서 편집기용 콘솔 생성을 선택합니다. 그런 다음 커널을 선택해야 합니다. 기존 커널에 저장된 데이터에 액세스해야 하는 경우를 제외하고 Python3(ipykernel)을 선택하면 나타나는 새 콘솔 창에서 코드 실행을 관리하기 위해 새 커널에 연결됩니다.

 

 

이제 콘솔을 만들고 커널을 Markdown 파일에 연결했으므로 코드를 실행할 수 있습니다. 실제로 코드를 실행하려면 Python 블럭 내부 아무 곳에나 커서를 놓은 다음(예: 첫 번째 except 키워드 왼쪽) Shift+Enter 를 눌러 실행합니다.

 

이번에는 28~33번 라인만 선택했습니다. Shift+를Enter 탭하면 해당 라인만 실행되었습니다. 숫자 중 하나에 유효하지 않은 값을 입력하면 ValueError가 발생했지만 34행과 35행에서 해당 핸들러를 선택하지 않았기 때문에 처리되지 않은 상태로 유지되었습니다.

이는 유용한 기능이지만 코드의 작은 부분을 선택할 때는 주의하십시오. 완전한 프로그램을 구성하기에 충분한 양을 선택했는지 확인해야 합니다. 예를 들어, 32행과 33행만 선택하면 선택한 코드 자체가 구문 오류이기 때문에 충돌이 발생합니다.

참고:.py 콘솔을 연결하여 일반 텍스트 파일 및 파일 내에서 포함된 코드를 실행할 수도 있습니다 . 시간 절약에 큰 도움이 되지 않나요?

보시다시피 JupyterLab을 사용하면 문서화하고 실행할 수 있는 코드가 포함된 Markdown 파일을 작성할 수 있습니다. 따라서 독자가 보기를 원하는 방식으로 Markdown을 볼 수 있을 뿐만 아니라 Markdown 파일에 콘솔을 연결하여 코드도 테스트할 수 있습니다. 즉, 잘못된 코드로 Markdown 문서를 생성하는 것을 방지할 수 있습니다.

마크다운 파일에 목차 사용하기

편의상 긴 Markdown 파일이 있는 경우 목차를 생성하여 해당 파일 내의 특정 섹션으로 이동할 수 있습니다. 이렇게 하려면 그림과 같이 목차 아이콘을 클릭하세요.

 

 

Markdown 파일 미리보기를 선택한 다음 목차 항목 중 하나를 클릭하면 Markdown 미리보기 파일이 해당 제목으로 이동합니다. 마찬가지로 Markdown 파일을 먼저 선택하면 목차에서 선택한 위치로 이동합니다.

다양한 파일 관리 및 보기

JupyterLab 에는 일반적인 파일 관리 작업을 수행하고 일반적인 파일 형식을 보고 편집할 수 있는 자체 파일 브라우저가 포함되어 있습니다. 다음과 같이 해당 아이콘을 선택하면 파일 브라우저를 항상 사용할 수 있습니다.

 

 

사용할 수 있는 파일 브라우저 도구는 다음과 같습니다.

  • New Launcher - 다양한 Jupyter 구성요소에 액세스할 수 있는 새로운 Launcher 페이지를 엽니다.
  • 새 폴더 - 현재 폴더 내에 새 하위 폴더를 만들 수 있습니다. 위 스크린샷에서는 새 Output_Files하위 폴더를 만들었습니다.
  • 파일 업로드 - 현재 폴더에 파일을 업로드할 수 있습니다. 이는 JupyterLab 서버가 네트워크의 다른 위치에 있는 컴퓨터에서 실행되는 네트워크 시스템용으로 설계되었습니다. 동일한 컴퓨터에서 클라이언트와 해당 서버를 모두 실행하는 경우 로컬 컴퓨터의 어느 위치에서나 현재 폴더에 파일을 업로드할 수 있습니다.
  • 파일 브라우저를 새로 고치면 파일 브라우저에 표시된 파일 목록이 최신인지 확인됩니다. 이는 또한 원격 변경 사항이 로컬 시스템의 Jupyter 인터페이스에 즉시 표시되지 않을 수 있는 네트워크 환경을 위해 설계되었습니다.
  • 이름으로 파일을 필터링하면 표시되는 파일을 제한할 수 있습니다. 파일이 많고 특정 파일이나 유사한 파일을 찾고 있는 경우 매우 유용합니다. 예를 들어 ipynb이 필드에 입력하면 Jupyter Notebook 파일만 표시됩니다.
  • Jupyter Root는 JupyterLab을 시작한 폴더의 파일을 표시합니다. JupyterLab에 관한 한 이는 파일 시스템의 최상위입니다. 앞에서 설명한 대로 파일을 업로드하지 않는 한 파일 브라우저에서 Jupyter 루트 폴더 위의 폴더에 있는 파일에 액세스할 수 없습니다.

스크린샷에 나열된 파일은 Samples폴더에 있습니다. 해당 폴더를 두 번 클릭하면 해당 폴더에 액세스할 수 있습니다. 상위 폴더에 액세스하려면 루트 아이콘 오른쪽에 있는 이동 경로를 클릭하세요. 보시다시피 파일 시스템을 탐색하는 것은 매우 간단합니다.

참고:위 스크린샷에서 range type.md 파일 옆에 녹색 점을 발견했을 수도 있습니다. 이는 파일과 관련된 실행 중인 커널이 있음을 의미합니다. 폴더 에서 이 파일의 복사본을 열고 Samples복사본으로 점을 복제할 수 있는지 확인해 보세요.

개별 파일을 마우스 오른쪽 버튼으로 클릭하여 추가로 관리할 수 있습니다. 나타나는 팝업 메뉴를 사용하면 파일 삭제, 이름 바꾸기, 복제와 같은 일반적인 작업을 수행할 수 있습니다. 여기에서 새 노트북을 만들 수도 있습니다. 이상하게도 Markdown을 만들 수는 없습니다.

파일을 보려면 해당 파일을 두 번 클릭하세요.

 

두 번 클릭하면 파일이 자체 읽기 전용 탭 창에서 열립니다. 위 스크린샷에서는 보기 위해 .pdf, .csv, .json, .jpg및 .md파일을 성공적으로 열었습니다. 파일 브라우저에서 해당 파일을 마우스 오른쪽 버튼으로 클릭하고 "연결 프로그램 → 편집기"를 선택하여 일부 파일을 편집할 수 있습니다. 폴더에 있는 일부 Samples 파일을 자유롭게 열어보세요.

JSON 파일 작업 시 주의 사항

JavaScript Object Notation(JSON)은 데이터를 저장하고 다른 시스템 간에 전달하기 위한 개방형 표준 파일 및 데이터 교환 형식입니다. Python에서 JSON 파일로 직접 작업할 수 있지만, JupyterLab에서 보고 편집할 수도 있습니다. 그러나 주의할 점이 있습니다.

편집을 위해 하나의 JSON 파일을 열고 형식화된 형식으로 보기 위해 다른 하나를 열어야 하는 경우, 간단한 보기를 만드는 것은 작동하지 않습니다. 편집을 위해 JSON 파일을 열고 새 보기를 생성하는 경우 편집을 위한 두 개의 보기가 생성됩니다. 이 문제를 해결하려면 파일을 두 번 열어야 합니다. 먼저 편집용으로, 다시 읽기용으로 열어야 합니다. 다행히 JupyterLab은 여전히 ​​동일한 파일에 두 개의 보기를 생성하므로 둘 다 동기화됩니다.

아래 스크린샷은 파일 브라우저에서 해당 파일을 두 번 클릭하여 연 Samples 폴더 내 Movies.json의 파일을 보여줍니다. 기본적으로 보기 위해 열립니다. 이제 파일 브라우저에서 파일 이름을 마우스 오른쪽 버튼으로 클릭하고 "연결 프로그램 → 편집기"를 선택하면 편집을 위해 두 번째 복사본이 열립니다. 두 번째 파일의 탭을 화면 오른쪽으로 드래그하면 두 파일이 동시에 표시됩니다.

 

보시다시피, 스크린샷의 왼쪽에는 편집할 수 있는 파일이 표시되고, 오른쪽에는 읽기 전용으로 볼 수 있는 동일한 파일이 표시됩니다.

마지막으로 강조 표시된 텍스트를 변경하기로 결정했다고 가정해 보겠습니다.

 

 

왼쪽의 편집 가능한 버전을 변경하면 오른쪽의 읽기 전용 버전에 즉시 반영됩니다. 결국 당신은 같은 것을 보고 있는 것입니다.

파일을 직접 볼 수 있는 기능은 시간을 크게 절약해 줄 뿐만 아니라 코드에 필요하거나 생성된 모든 파일을 빠르게 보는 데도 도움이 됩니다. 각 파일을 자체 탭에 열면 마우스를 한 번만 클릭하면 해당 파일을 볼 수 있습니다.

Jupyter를 종료하지 않고 운영 체제 사용

JupyterLab을 사용하면 운영 체제의 명령줄 환경에 직접 액세스할 수 있습니다 . 이렇게 하려면 그림과 같이 터미널 버튼을 클릭하세요.

 

 

Windows에서는 PowerShell 이 ​​열립니다. Linux에서는 일반적으로 Bash 셸을 사용 하고, macOS에서는 일반적으로 Zshell을 사용합니다. 명령줄이 있으면 필요한 운영 체제 명령을 입력할 수 있습니다. JupyterLab에 액세스하는 데 사용한 것과 동일한 권한으로 명령을 실행하고 있으므로, 관리자 권한으로 실행하지 않으면 모든 명령을 실행할 수 없다는 점을 기억하세요.

아래 스크린샷은 JupyterLab 내에서 액세스한 Windows PowerShell 터미널을 보여줍니다.

 

 

여기서는 tree 명령을 사용하여 Samples 폴더의 내용을 검사했습니다. 보시다시피, 9개의 파일과 일부 파일에 대한 검사점 정보가 포함된 하위 폴더 1개가 있습니다. 이 폴더는 실제로 숨겨져 있으므로 해당 내용에 대해 걱정할 필요가 없습니다.

모듈을 설치하기 위해 명령줄을 사용해야 하는 경우 터미널이 유용합니다.

참고: 터미널을 시작하면 JupyterLab이 실행되는 동일한 Python 환경 내에서 실행됩니다. 따라서 가상 환경에서 JupyterLab을 실행하는 경우 이 터미널로 설치하는 모든 패키지는 가상 환경에 설치됩니다. 즉, 노트북, 콘솔 및 기타 터미널에서 사용할 수 있지만 가상 환경 외부의 Python 설치를 방해하지 않습니다.

또한 터미널을 사용하여 추가 Python 코드를 실행하고 JupyterLab의 다른 곳에서 실행 중인 코드와 별도로 유지할 수도 있습니다. 터미널을 열 때마다 자체 커널이 생기므로 서로 간섭하지 않고 여러 터미널과 명령을 실행할 수 있습니다.

다른 도구 사용

이 단계에서는 JupyterLab의 주요 도구를 다루었습니다. 그러나 사용 가능한 항목이 더 있습니다. 기타 섹션을 살펴보면 아직 끝나지 않았다는 것을 알 수 있습니다.

텍스트 파일을 클릭하면 일반 텍스트 파일을 만들 수 있는 텍스트 편집기가 열립니다. JupyterLab을 사용하면 여러 보기를 생성하고 콘솔을 연결하여 그 안에서 코드를 실행할 수 있습니다.

Python 파일을 클릭하면 확장자가 .py인 파일이 만들어지지만, 본질적으로 이것은 텍스트 파일이지만 해당 내용은 사용 중인 Python 키워드를 강조하기 위해 색상으로 구분됩니다. 텍스트 파일과 마찬가지로 이러한 파일에 대한 여러 보기를 만들고 콘솔을 연결하여 그 안에 있는 코드를 실행할 수 있습니다. 물론, filename.py을 사용하여 python 스크립트을 실행할 수 있습니다._

Python 3을 클릭하면 독립형 콘솔을 만들 수 있습니다.

 

 

이는 Python REPL 과 같은 환경을 제공하는 IPython을 사용합니다 . 여기서 코드를 직접 입력하거나 노트북이나 Markdown 파일에서 끌어서 놓은 다음 실행할 수 있습니다. 이 코드에는 자체 커널 프로세스가 있으므로 JupyterLab의 다른 곳에서 실행 중인 다른 항목을 방해하지 않습니다. 아래 스크린샷은 콘솔 하단에 삽입된 일부 코드를 보여줍니다.

 

 

콘솔에서 코드를 실행하려면 Shift+Enter를 탭하기만 하면 됩니다. 보시다시피 출력은 콘솔 상단에 표시됩니다.

주요 시사점

이제 JupyterLab에서 사용할 수 있는 다양한 일반 도구와 기술에 대한 경험이 생겼습니다. 많은 내용을 다루었지만 여기에서는 이 자습서에서 다룬 가장 중요한 개념을 요약하는 몇 가지 질문과 답변을 찾을 수 있습니다.

이 질문을 사용하여 이해도를 확인하거나 방금 배운 내용을 요약하고 확고히 할 수 있습니다. 각 질문 후에는 축소 가능한 섹션에 숨겨진 간략한 설명을 찾을 수 있습니다. 표시/숨기기 토글을 클릭 하면 답변이 표시됩니다. 뛰어들 시간입니다!

JupyterLab은 정확히 무엇을 할 수 있나요?

JupyterLab은 Jupyter Notebook, Markdown 편집기, 텍스트 편집기를 포함한 여러 도구를 제공합니다. 다양한 파일을 깔끔하게 표시하고 파일에 포함된 Python 코드를 실행할 수도 있습니다. 노트북 간에 데이터를 이동하거나 공유할 수도 있습니다. 디버깅 기능도 제공합니다.

JupyterLab을 사용하는 이유는 무엇입니까?

JupyterLab은 연구, 교육 및 학습 활동을 문서화하고 공유하는 데 도움이 되는 브라우저 기반 인터페이스입니다. 데이터 분석에 매우 널리 사용되는 도구입니다. 핵심 도구는 Jupyter Notebook이지만 JupyterLab은 노트북을 다른 JupyterLab 도구와 통합하여 노트북의 기능을 향상시킵니다.

어떤 키보드 샷컷을 사용할 수 있나요?

JupyterLab의 디자이너는 키보드 단축키 사용을 간절히 원하므로 Windows 및 Linux에서는 Ctrl+ Shift+ , macOS에서는 HCmd+ Shift+H 또는 도움말 → 키보드 단축키 표시 메뉴 옵션을 사용하여 전체 세트에 액세스할 수 있도록 만들었습니다. 여러 메뉴 항목에는 마우스를 항목 위로 가져갈 때 나타나는 다양한 도구 설명과 마찬가지로 키보드 단축키도 포함되어 있습니다. 이 튜토리얼 전체에서 가장 일반적인 몇 가지 키보드 단축키를 배웠습니다.

커널이 왜 그렇게 중요한가요?

커널은 JupyterLab 파일 내의 코드와 해당 런타임 환경 간의 링크를 제어합니다. 커널은 프로그램의 데이터에도 액세스할 수 있으므로 노트북 간에 커널을 공유함으로써 한 노트북의 데이터를 다른 노트북과 공유할 수 있습니다.

Jupyter Notebook을 닫아도 해당 커널은 닫히지 않습니다. 다른 노트북에서도 공유할 수 있기 때문입니다. 일반적으로 커널을 실행 중인 상태로 두어도 괜찮지만, 커널을 닫고 싶다면 커널을 선택하고 마우스 오른쪽 버튼을 클릭한 후 팝업 메뉴에서 커널 종료를 선택하면 됩니다.

JupyterLab은 어떤 개선 사항을 제공합니까?

JupyterLab을 사용하면 여러 노트북을 표시하고, 노트북 간에 콘텐츠를 이동하고 코드를 공유하고, 노트북의 여러 부분을 동시에 볼 수 있습니다. 코드를 디버깅할 수도 있습니다. 또한, Markdown 파일, 텍스트 파일 및 기타 여러 일반적인 형식으로 작업할 수 있는 도구와 그 안에 포함된 코드를 실행하는 기능도 제공합니다.

JupyterLab은 Jupyter 프로젝트 의 일부입니다 . 이것은 발전하는 프로젝트이므로 최신 개발 및 개선 사항을 따라잡는 것이 좋습니다.

 

출처 : https://realpython.com/using-jupyterlab/#using-the-markdown-editor