Dash 개발 환경 구성

#VSCode, #Jupyter Dash, #가상환경
Jan 30, 2024
Dash 개발 환경 구성

1. IDE 선택

웹 기반의 App을 개발하기 위해 어떤 개발 도구가 plotly Dash와 잘 맞을까?
Dash는 파이썬 기반의 프레임워크이기 때문에 일반적인 파이썬 개발 환경을 사용하면 된다. 이에 따라, 대다수의 개발자들은 마이크로소프트의 VSCode, Jupyter notebook(주피터 노트북), 혹은 Pycharm을 선호한다.
개인적으로, 저는주피터 노트북을 장기간 사용해 왔다. 파이썬을 데이터 분석 목적으로 사용하였기 때문에, 각 셀에서 데이터를 확인할 수 있는 기능이 매우 유용했기 때문이다.
주피터 노트북은 웹브라우저에서 셀(블록) 단위로 코드를 실행할 수 있는 편집기다. 이를 통해 셀마다 확인하고 싶은 데이터를 바로 확인할 수 있어 매우 편리하다.
notion image
VSCode와 주피터 노트북은 각기 다른 사용 사례와 개발 요구에 최적화되어 있다. 아래에 각각의 장단점을 비교하여 요약했다:
구분
장점
단점
주피터 노트북
- 대화형 개발 환경: 코드를 셀 단위로 실행하고 결과를 바로 볼 수 있어 대화형 데이터 분석과 시각화에 매우 적합 - 교육 및 설명에 용이: 마크다운을 지원하여 문서화와 코드를 결합한 풍부한 교육 자료와 설명서를 만드는 데 용이 - 데이터분석에 최적화: 데이터 탐색, 시각화 및 분석 작업을 위한 다양한 라이브러리와 통합이 용이
- 파일 및 버전 관리의 어려움: Notebook 파일 형식은 JSON으로 되어 있어 전통적인 코드 파일에 비해 버전 관리가 어려움 - 큰규모 개발에 제한적: 모듈화가 어렵고, IDE의 전체 기능을 제공하지 않음 - 성능 문제: 큰 데이터셋을 처리하거나 복잡한 연산을 수행할 때 성능 문제가 발생할 수 있음
VSCode
- 확장성: 방대한 확장 프로그램 생태계를 통해 사용자의 필요에 맞게 기능 확장 가능 - 버전 관리 통합: Git과 같은 버전 관리 시스템과의 통합이 용이하여 협업과 코드 관리가 편리 - 디버깅 및 테스트 도구: 강력한 디버깅 기능과 다양한 테스트 도구를 내장하고 있어 복잡한 애플리케이션 개발에 유리
- 대화형 개발에는 제한적: 주피터 노트북처럼 셀 단위로 코드를 실행하고 결과를 바로 확인하는 대화형 개발에 한계 - 초기 설정과 학습 난이도: 다양한 기능과 확장성 때문에 초기 설정이 복잡할 수 있으며, 모든 기능을 숙지하는 데 시간이 걸림 - 리소스 사용량: 많은 확장 프로그램을 설치하고 사용하면 시스템 리소스 사용량이 증가
결론적으로, 개발하고자 하는 내용이 데이터 분석과 시각화에 중점을 두고 있다면 주피터 노트북이 더 적합할 수 있다. 반면, 대규모 애플리케이션 개발, 다양한 프로그래밍 언어 사용, 강력한 코드 편집 및 디버깅 기능이 필요하다면 VSCode가 더 나은 선택일 수 있다.
하지만 최근에 VSCode에 주피터 extension을 통합하여 VSCode의 편리한 통합 환경에서 주피터 노트북의 셀단위 실행 기능을 활용할 수 있다는 사실을 확인하였다.
VSCode에서 주피터 노트북을 사용하는 것은 효율적인 개발 환경을 구성하는 데 있어 매우 유용한 방법이다. VSCode의 주피터 확장 기능을 통해, VSCode의 강력한 코드 편집 및 디버깅 기능과 주피터 노트북의 인터랙티브한 데이터 분석 및 시각화 기능을 동시에 활용할 수 있다.
VSCode에서 Jupyter 노트북을 사용하기 위한 기본 단계는 간단하다.
  1. Jupyter Extension 설치: VSCode 마켓플레이스에서 'Jupyter' 확장 기능을 검색하여 설치한다. 이 확장 기능은 주피터 노트북 파일(.ipynb)을 VSCode 내에서 직접 열고, 실행하고, 편집할 수 있는 기능을 제공한다.
  1. 노트북 파일 열기 또는 생성: VSCode에서 .ipynb 확장자를 가진 노트북 파일을 열거나 새로운 노트북 파일을 생성하여 사용할 수 있다.
  1. 셀 단위 실행: 각 셀을 개별적으로 실행하여 코드의 결과를 바로 확인할 수 있습니다. 또한, 셀 사이에 마크다운을 추가하여 문서화 작업도 수행할 수 있다.
  1. 고급 기능 활용: VSCode의 다양한 확장 기능과 통합 도구를 사용하여 더욱 효율적인 개발 환경을 구성할 수 있다. 예를 들어, Git 통합 기능을 사용하여 노트북 파일의 버전 관리를 수행할 수 있다.
VSCode에서 Jupyter 노트북을 사용하는 방법에 대한 자세한 설명이 포함된 영상 자료는 온라인에서 쉽게 찾을 수 있다. 아래의 영상 또한 VSCode에서 Jupyter법을 잘 설명한다.

2. Jupyter Dash

Jupyter Dash는 Jupyter 환경에서 Dash 애플리케이션을 쉽게 개발하고 테스트할 수 있도록 설계된 라이브러리다. 이를 사용함으로써 사용자는 Jupyter 노트북이나 JupyterLab 내에서 직접 Dash 앱을 실행하고, 인터랙티브하게 개발 과정을 진행할 수 있다. 이는 데이터 분석과 시각화 작업을 더욱 효율적으로 수행할 수 있게 해준다.
notion image
Dash 2.11 버전부터는 JupyterDash가 Dash 내부에 포함되기 시작했다. 이로 인해 최신 버전의 Dash를 사용하는 개발자는 별도로 jupyter_dash 패키지를 설치할 필요가 없어졌다. 이는 개발 환경 설정을 더욱 간소화하고, Dash와 Jupyter 환경 간의 통합을 더욱 원활하게 만든다. 이제 Dash 앱 개발을 위해 단순히 Dash를 설치하면 Jupyter 환경에서도 Dash 애플리케이션을 개발할 수 있다.
개발중인 VSCode에서 코딩 중인 코드의 실행 결과를 바로 렌더링하기 위한 방법은 다음과 같다.
app.run(jupyter_mode='inline')
별도의 브라우저에 실행 결과를 렌더링하기 위한 방법은 다음과 같다.
app.run(jupyter_mode="external")
Dash 2.11이후의 JupyterDash에 대한 자세한 사항은 다음 링크를 참조하면 된다.
 

3. 가상환경

Dash 를 이용하여 App을 개발하려면 PC에 파이썬을 포함하여 많은 라이브러리(pandas, plotly.. 등)를 설치해야 한다. 그런데 이 파이썬과 라이브러리들은 특정 버전에 서로 의존성을 가지는데, 그 버전이 설치 시기에 따라 달라지는 문제가 있다. 따라서 동일한 소스코드라 하더라도 개발 또는 운영 환경이 바뀌면 제대로 동작되지 않는 경우가 많다. 특히 개발 PC와 운영 웹서버는 다른 시스템인 경우가 대부분이므로 설치해야 하는 라이브러리 버전이 일치하지 않는 겅우가 많다.
가상환경은 파이썬 개발에서 매우 중요한 개념으로, 가상환경을 사용하면 각 프로젝트별로 독립된 파이썬 인터프리터와 라이브러리 세트를 유지할 수 있어, 다양한 프로젝트 간의 의존성 충돌을 방지할 수 있다.
가상 환경의 장점:
  1. 의존성 관리: 프로젝트별로 필요한 라이브러리와 그 특정 버전을 관리할 수 있어, 다른 프로젝트와의 의존성 충돌을 방지한다.
  1. 환경 일관성: 개발 환경과 운영 환경 간의 차이를 최소화하여, "내 PC에서는 동작하는데..."와 같은 문제를 줄인다.
  1. 안전한 테스트: 새로운 라이브러리나 업데이트를 테스트할 때, 전체 시스템에 영향을 미치지 않고 안전하게 실험할 수 있다.
가상환경 설정 방법:
  1. venv를 사용한 가상환경 생성 (Python 3.3 이상 내장):
    1. # 가상환경 생성 python3 -m venv myenv # 가상환경 활성화 # Linux나 MacOS의 경우 source myenv/bin/activate # Windows의 경우 myenv\Scripts\activate.bat # 이후 필요한 라이브러리 설치 pip install dash pandas plotly
  1. conda를 사용한 가상환경 생성 (Anaconda 또는 Miniconda):
    1. # 가상환경 생성 conda create --name myenv python=3.8 # 가상환경 활성화 conda activate myenv # 이후 필요한 라이브러리 설치 conda install dash pandas plotly
 
가상환경을 사용하면 프로젝트별로 필요한 파이썬 및 라이브러리 버전을 관리할 수 있어, 다양한 시스템과 환경에서의 프로젝트 실행과 배포가 훨씬 용이해진다. 가상환경 내에서 개발과 테스트를 진행하고,requirements.txt 파일로 공유하면 다른 개발자나 운영 환경에서도 동일한 환경을 쉽게 재현할 수 있다.
requirement.txt는 파이썬 라이브러리 정보(버전, 리스트)를 담은 파일로, 생성 방법은 다음과 같다.
(venv) $ pip freeze > requirements.txt
requirement.txt를 이용하여 필요한 라이브러리를 설치하는 방법은 다음과 같다.

requirement.txt가 주어졌을 때

(venv) $ pip install -r requirements.txt
 
가상환경 참고자료:
Share article

꼬꼬데이 | 꼬리에 꼬리를 무는 데이터 이야기