종속성을 쉽게 설치해보자
종속성을 미리 선언하여 쉽게 설치 가능하도록 모듈을 만들어보자
종속성을 쉽게 설치해보자
종속성을 쉽게 설치해보자
종속성을 미리 선언하여 쉽게 설치 가능하도록 모듈을 만들어보자
1. 서론 (Introduction)
- 문제/상황 (Problem):
- 프로젝트를 처음 시작할 때 수동으로 라이브러리를 설치하거나 OS별로 다른 명령어를 입력해야 하는 번거로움이 존재한다.
- 목적 (Purpose):
- 쉘 명령어를 기반으로 종속성을 자동으로 검증하고 설치하는 통합 모듈을 구축하여 개발 환경 설정 시간을 단축한다.
- 대상 (Target Audience):
- 일관된 개발 환경 구성이 필요한 팀이나 다양한 운영체제에서 동작하는 도구를 개발하는 엔지니어
2. 방법 및 과정 (Methods & Process)
- 배경 조사 및 데이터 (Data Collection):
- 기존의 requirements.txt 방식보다 강력한 OS 패키지 관리자와의 연동 가능성을 조사하였다.
| 기능 | 설명 | 장점 |
|---|---|---|
| OSMap 구조 | Windows, Linux, Mac 전용 명령어 매핑 | 플랫폼에 상관없는 유연한 실행 지원 |
| 쉘 명령어 직접 실행 | 서브프로세스를 통한 직접적인 제어 | 라이브러리 외에 시스템 바이너리 관리 가능 |
| 환경 변수 자동 갱신 | Windows PATH 레지스트리 실시간 반영 | 설치 후 재시작 없는 즉각적인 사용 가능 |
| Python 인터프리터 연동 | 현재 실행 중인 Python 경로 자동 치환 | 가상 환경 및 다양한 실행 환경 최적화 |
| 검증 로직 내장 | 설치 전후 상태 코드 확인을 통한 무결성 확보 | 안정적인 런타임 환경 보장 |
- 접근 방법 (Approach Methods):
- [방법 1]: namedtuple을 활용하여 가독성 높은 종속성 정의 데이터 구조를 설계한다.
- [방법 2]: subprocess 모듈을 활용하여 표준 출력 억제 및 에러 처리가 포함된 실행기를 구현한다.
- 분석 및 해결 프로세스 (Analysis Flow):
- 도구/기술: Python, subprocess, winreg
- 주요 단계: OS 식별 로직 구현 $\rightarrow$ Dependency 클래스 정의 $\rightarrow$ 쉘 명령어 실행기 개발 $\rightarrow$ Windows 환경 변수 갱신 기능 추가 $\rightarrow$ 자동 설치 루프 완성
- 결과 도출 및 검증: tqdm 및 numpy 설치 테스트를 통해 자동 설치와 검증 프로세스가 정상 작동함을 확인한다.
3. 결과 (Results)
- 분석 결과 요약:
- 작성된 모듈은 Python 패키지뿐만 아니라 FFmpeg, 7-Zip과 같은 시스템 바이너리까지 통합 관리가 가능하다.
- 특히 Windows 환경에서 winget과 연동 시 설치 직후 환경 변수를 갱신하여 별도의 설정 없이 바로 사용 가능한 수준의 편의성을 제공한다.
4. 인사이트 및 액션 (Insights & Action)
- 인사이트 (Insight):
- 코드 내에 명시적으로 종속성을 선언함으로써 문서화와 자동화를 동시에 달성할 수 있다.
- 시스템 명령어를 추상화하면 인프라 설정에 소요되는 리소스를 혁신적으로 줄일 수 있다.
- 실행 방안 (Action Plan):
- 모든 사내 자동화 스크립트에 이 bootstrap 최적화 모듈을 적용하여 환경 일관성을 확보한다.
- 한 줄 결론 (Key Takeaway):
- dependency 모듈로 복잡한 환경 설정을 코드 한 줄로 단순화할 수 있다. 샘플 코드
- 다음 스텝 (Next Step):
- 도커 컨테이너 빌드 과정에서도 이 모듈을 활용하여 베이스 이미지 구성을 자동화한다.
This post is licensed under CC BY 4.0 by the author.