ㅇ 일 자 : 2026년 4월 20일(월)
ㅇ 주 제: Module, Package, Library 개념 이해와 가상환경에서 함수 조합을 이용한 팀프로젝트 실습
ㅇ 목 표
- Module, Package, Library 개념 이해
- Python 가상환경을 만들기 위한 환경설정 방법에 대해 알아보고, 팀프로젝트를 시행한다.
ㅇ 내 용
1. 팀 프로젝트(Team Project) 잘 하려면 어떻게 할 것인가?
1.1. 모르는 것은 '제대로' 물어보기 (오버 커뮤니케이션)
신입이 가장 많이 하는 실수는 혼자 끙끙 앓다가 마감 직전에 "못 지켰다"고 말하는 것입니다. 모르는 것은 죄가 아니지만, 공유하지 않는 것은 협업에서 치명적이다.
- 15분 룰(Rule): 모르는 에러나 벽에 부딪혔을 때, 혼자서 15~30분 동안 구글링과 공식 문서를 찾아보세요. 그래도 해결이 안 되면 팀원에게 질문해야 한다
- 질문할 때는 맥락(Context)을 포함해서 하기
1.2. 깃(Git)과 협업 워크플로우 철저히 지키기
개발 팀 프로젝트에서 가장 빈번하게 갈등이 생기는 지점은 '코드 관리'입니다. 신입일수록 기본에 충실해야 함
- 커밋 메시지 규약(Commit Convention) 준수: feat:, fix:, docs: 등 팀에서 정한 규칙을 철저히 따르기
- 작고 쪼개진 PR(Pull Request) 보내기: 코드를 며칠 동안 쌓아두었다가 한 번에 올리면 리뷰어가 확인하기 어렵고 충돌(Conflict) 위험도 커짐. 기능 단위로 작게 쪼개서 자주 공유
- 코드리뷰를 학습의 기회로: 선배나 동료의 피드백을 방어적으로 듣지 말고, "왜 이렇게 작성하는 것이 더 좋은지" 배우는 자세로
1.3. '내가 짠 코드'의 동작 책임지기
구현에 급급해 작동만 겨우 되는 코드를 던지는 것은 동료에게 빚(기술 부채)을 넘기는 것과 같다.
- 최소한의 자가 검증: 코드를 올리기 전에 정상 작동하는지, 예외 상황(빈 값 입력, 에러 발생 등)에서 터지지 않는지 로컬 환경에서 반드시 직접 테스트해 보기
- 가독성 신경 쓰기: 변수와 함수 이름은 직관적으로, 로직이 복잡하다면 왜 이렇게 짰는지 주석(Comment)을 남겨 동료 배려
1.4. 일정 산정(Estimation)은 다소 보수적으로 반영
신입 개발자는 자신의 개발 속도를 과신하거나, 잘 보이고 싶은 마음에 일정을 타이트하게 잡는 경향이 있다.
- 버퍼(Buffer) 두기: 예상치 못한 에러, 환경 설정 문제, 회의 시간 등을 고려해 자신이 생각한 시간보다 1.5배에서 2배 정도 시간을 더 잡고 일정을 공유
- 일정 지연은 즉시 공유: 아무리 보수적으로 잡아도 일정이 늦어질 수 있습니다. 늦어질 것 같다는 판단이 드는 '그 순간' 바로 팀에 공유하고 우선순위를 조정
1.5. 기록하고 문서화하는 습관 갖기
말은 사라지지만 기록은 남는다. 문서화를 잘하는 신입은 팀 전체의 생산성을 높여준다.
- API 명세서, 트러블슈팅 기록: 프론트엔드와 백엔드가 만나는 지점의 API 명세서를 명확히 기록하고, 프로젝트 중 겪은 에러와 해결 과정(트러블슈팅)을 Wiki나 블로그, 노션에 정리하기. 이는 프로젝트 끝난 후 포트폴리오 자산이 된다.
2. 파이참 활용 방법
2.1. 인터페이스의 두 가지 방식(GUI vs CLI) : 컴퓨터를 조작하고 프로그램을 실행하는 방식
① GUI (Graphic User Interface, 그래픽 사용자 인터페이스)
마우스나 터치스크린을 이용해 아이콘, 버튼, 창 등의 시각적 요소를 클릭하여 조작하는 방식
(예시) Windows, macOS, Android, iOS, 웹 브라우저 등
② CLI (Command Line Interface, 명령줄 인터페이스)
키보드로 직접 명령어를 입력하여 프로그램을 실행하는 방식
(예시) 터미널(macOS/Linux), PowerShel l(Windows용 강력한 CLI 셸 및 스크립팅 언어)
2.2. 터미널(Terminal)의 이해 : CLI 환경에서 사용자의 입력(Input)을 받고, 결과(Output)를 화면에 출력해 주는 매개체
2.3. 웹 개발자에게 CLI 환경이 필수인 이유
백엔드 개발과 서버 운영을 이해하기 위해 CLI 숙지는 선택이 아닌 필수
- 서버 자원의 효율성: 서버에서 GUI를 사용하는 것은 불필요한 메모리와 시스템 비용을 낭비하게 된다.
- 백엔드 서버의 현실: 실제 백엔드 서버는 모니터나 마우스가 없는 'GUI 없는 컴퓨터' 상태로 운영된다.
- OS 환경의 표준: 대부분의 백엔드 서버는 Unix/Linux 기반 환경에서 실행된다.
- 서버를 제어하기 위한 Unix 커맨드 지식은 웹 개발자의 필수 역량
3. Python 키오스크 팀 프로젝트 ** 별도 자료 **
3.1. 개발 일정
- 26.04.20~26.04.28(화)09:00까지 완성 제출
- 주제 confirm : 4. 20.(월)
- 개발 계획서 제출 : 4. 22(수)21:00한
- 완료 보고서 제출 : 4. 28(화)21:00한
- 추후에는 프로젝트 주제를 스스로 찾아서 선정
- 개발일지를 기록유지 후 첫번째 프로젝트를 마지막 프로젝트와 함께 수정보완할 수 있다
4. 소프트웨어 개발 과정

4.1. 목표 및 계획 수립 (Planning)
- 개념: 무엇을 만들 것인지 전체적인 방향성을 정하고 일정을 짜는 단계
- 이미지 속 예시: 로그인 기능 개발이라는 구체적인 프로젝트 목표를 설정
4.2. 요구사항 분석 (Analysis)
- 개념: 프로그램이 갖추어야 할 세부 기능과 제약 조건을 정의
- 이미지 속 예시: 로그인 기능에 필요한 구체적인 요소(아이디/비밀번호 입력 폼, 아이디 중복 체크 기능 등)를 도출
4.3. 설계 (Design)
- 개념: 분석된 요구사항을 바탕으로 프로그램의 구조, 데이터베이스, UI/UX 등을 설계
- 이미지 속 예시: 어떤 구조(아키텍처, 알고리즘, 시스템 구성 등)로 코드를 구현할 것인지 설계도를 그린다.
4.4. 구현 (Implementation / Coding)
- 개념: 개발 언어를 사용하여 실제 코드를 작성하는 단계
- 이미지 속 예시: 파이썬(Python) 등의 프로그래밍 언어를 활용하여 모듈별로 잘게 나누어 실제 개발 진행
4.5. 테스트 (Testing)
- 개념: 개발된 소프트웨어에 오류(버그)가 없는지 확인하고, 요구사항대로 잘 작동하는지 검증
- 순서도에서 구현과 테스트 단계 사이에 양방향 화살표가 있는 이유는 테스트 중 오류가 발견되면 다시 구현(수정) 단계로 회귀
4.6. 운영 및 유지보수 (Maintenance)
- 개념: 완성된 프로그램을 사용자에게 배포(운영)하고, 실제 사용 중 발생하는 버그를 수정하거나 새로운 기능을 추가(유지보수)
6. 파이썬 설치 사용하기 (터미널 명령어)
# 특정 구버젼 설치가 필요할 때 기본 저장소에 원하는 버젼이 없을 경우 추가로 설치해 준다.
Python3 --version 또는 which Python3 # 설치된 파이썬 버젼을 먼저 확인해 본다.
Sudo add-apt-repository ppa : deadsnakes/ppa-y # 프로그램을 지정한다
Sudo apt update # 업데이트 한다.
Sudo apt install python3.10 # 원하는 구버젼을 설치 한다.
<< Module, Package, Library >> 가상환경에서 작업을 해줘야 한다
1. 모듈(Module)
모듈은 전역변수·함수·클래스 등을 모아놓은 .py 파일, 다른 파일에서 import 모듈명 또는 from 모듈명 import 함수명으로 불러와 사용한다
(예시) import math로 수학 함수 사용,
from datetime import datetime처럼 필요한 것만 가져올 수 있다.
1.1. 핵심 특징 및 개념
- 파일 단위: 모든 .py 파일은 하나의 모듈이다.
- 코드 재사용: 한 번 작성한 모듈은 여러 프로그램에서 가져와 사용할 수 있다.
- 네임스페이스: 모듈 단위로 코드를 분리하여 변수명 충돌을 방지한다.
1.2. 모듈 불러오기 (Import)
- import 모듈명: 모듈 전체를 가져오며, 모듈명.함수() 형태로 사용.
- from 모듈명 import 함수/클래스: 특정 요소만 가져와 함수명으로 바로 사용.
- import 모듈명 as 별명: 모듈 이름이 길 때 별명을 붙여 사용.
1.3. 모듈의 종류
- 내장 모듈 (Standard Library): 파이썬 설치 시 기본으로 제공되는 모듈 (예: random, math, datetime).
- 외부 모듈: pip 명령어를 통해 설치하는 패키지.
- 사용자 정의 모듈: 개발자가 직접 만든 .py 파일
1.4. 모듈 생성 및 사용 "예시"
- 파일 생성 (my_module.py):
def add(a, b): return a + b - 모듈 불러오기 (main.py):
import my_module print(my_module.add(3, 4)) # 7 출력
2. 패키지 (Package)
- 패키지는 관련 모듈들을 디렉터리 구조로 묶어 관리하는 방법
- 패키지 디렉터리에는 __init__.py가 있어야 패키지로 인식되고, 파이썬 3.3 이후에는 없어도 인식될 수 있다.
- 하위 패키지(서브 패키지)로 더 깊게 계층화 가능
- 파이썬 패키지는 유용한 기능(모듈)들을 폴더 구조로 묶어놓은 라이브러리 단위, pip 명령어로 PyPI(Python Package Index)에서 쉽게 설치·관리하며, import 문으로 불러와 데이터 분석(pandas, numpy)에 사용한다.
2.1. 핵심 정리
- 구조: 여러 개의 파이썬 모듈(.py 파일)을 모아놓은 디렉토리
- 설치: pip install 패키지명 명령어를 통해 설치
- 사용: import 패키지.모듈 또는 from 패키지 import 모듈로 가져온다.
2.2. 주요 파이썬 패키지
- 데이터 분석/과학: NumPy (수치 계산), Pandas (데이터 처리), SciPy (과학 기술 계산)
- 시각화: Matplotlib, Seaborn
- 머신러닝/딥러닝: Scikit-learn, TensorFlow, PyTorch
- 웹 크롤링/요청: Requests, BeautifulSoup4
2.3. 패키지 관리
- pip: 파이썬 기본 패키지 관리자입니다.
- conda: 아나콘다(Anaconda) 환경에서 사용하는 패키지 관리자
3. 라이브러리 (Library)
- 파이썬 라이브러리는 특정 작업을 쉽게 구현할 수 있도록 미리 만들어진 함수·클래스·데이터 등을 모아둔 집합으로, 여러 패키지·모듈을 포함할 수 있다.
(예시): pip install numpy처럼 외부에서 설치해 import numpy as np로 사용하는 경우가 많다
* 특정함수만 가져와서 사용하기 : import, form - 파이썬 라이브러리는 특정 기능을 미리 구현해 둔 코드의 집합(모듈/패키지)으로, 도서관(Library)에서 책을 빌리듯 import 재사용하는 도구. 처음부터 코드를 작성할 필요 없이 생산성을 높이며, 표준 라이브러리(설치 불필요)와 외부 라이브러리(pip 설치)로 나뉜다.
- 재사용성: 반복되는 복잡한 작업(데이터 처리, 웹 크롤링 등)을 미리 만들어두어 필요할 때 불러와 사용.
- 구성: 모듈(파일 단위)과 패키지(폴더 단위)가 모여 라이브러리를 구성하며, 파이썬에서는 혼용하여 사용.
- 구성 요소: Numpy (수치 계산), Pandas (데이터 분석), Matplotlib (시각화) 등이 대표적.
- 표준 라이브러리: 파이썬 설치 시 기본 제공 (예: math, os, sys, datetime).
- 외부 라이브러리: pip 도구를 사용해 설치 후 사용 (예: pip install pandas).
# 1. 라이브러리 불러오기 (Import)
import math
import pandas as pd # 별칭 사용
# 2. 라이브러리 기능 사용
result = math.sqrt(16)
print(result) # 4.0
- 데이터 분석/과학: Numpy, Pandas
- 시각화: Matplotlib, Seaborn
- 머신러닝/AI: Scikit-learn, TensorFlow
- 웹 자동화/크롤링: Requests, Beautiful Soup
직접 모든 기능을 구현하는 대신 만들어진 기술을 활용하므로 개발 시간 단축과 코드 효율성을 극대화할 수 있다.
4. 핵심 정리
4.1. 파이썬 가상환경의 필요성과 호환성
- 호환성 문제: 개발 환경(Windows, Linux, Mac 등 OS 차이)이나 라이브러리의 버전이 다르면 코드가 작동하지 않는 심각한 문제가 발생할 수 있다.
- 해결책 (""가상환경""): 버전 갈등과 호환성 문제를 방지하기 위해, 프로젝트마다 독립된 방을 만들어 주는 가상환경을 반드시 사용해야 한다.
- 개발 툴: 가상환경 관리가 편리한 PyCharm(파이참)을 설치하여 개발을 진행
4.2. 인터프리터 vs 컴파일러
- 인터프리터 (Python 사용하는 방식) : 코드를 한 줄 한 줄 실시간으로 번역하며 실행
- 컴파일러 : 코드 전체를 한 번에 기계어로 번역한 후 실행
4.3. 모듈(Module)과 패키지(Package) 이해하기
- 모듈 (Module): 다른 사람이 이미 만들어 둔 기능이나 내가 자주 쓰는 코드를 모아놓은 *.py 파일
- 외부 패키지를 설치할 때는 터미널에 pip install [패키지명] (예: pip install pyside6)을 입력하여 온라인에서 다운로드
- 패키지 (Package): 관련된 모듈들을 폴더 형태로 하나로 묶어놓은 '모듈의 집합'
4.4. 효율적인 팀 프로젝트(키오스크 만들기) 협업 가이드
- 주석 활용 : 주석은 내가 보기 위함이 아닌, '팀원이 봐도 한눈에 이해할 수 있도록' 작성하는 것이 기본 매너이자 규칙이다.
- 모듈 기반 협업 : 기능별로 역할을 분담하여 개인별로 *.py 파일(모듈)을 작성 --> 작성한 모듈들을 취합 담당자 1명에게 전달------> 담당자가 파이참 프로젝트 안에서 모듈들을 불러와(import) 하나로 결합해 키오스크 프로젝트를 완성
4.5. 프로젝트 행정
- 개발 계획서 작성: 프로젝트 시작 전, 무엇을 어떻게 만들고 역할을 어떻게 나눌지 문서화합니다.
- 완료 보고서 작성: 프로젝트가 끝난 후, 최종 결과물과 구현 기능, 협업 과정의 성과를 정리하여 제출합니다.
ㅇ 결 론
이번 실습에서는 우분투 파이참 가상환경을 통해 코드를 작성했다.
팀프로젝트로 kiosk 프로그램 개발은 파이참을 활용해 개인별 소과제를 분담 작성 후 소스코드를 통합하는 과정을 시행하였다. 물론 담당1인이 통합을 전담하였지만, 토의를 하는 과정에서 그리고 테스트를 진행하는 과정에서 부분적인 에러 발생, 에러부분을 찾아가며 해결해 나가는 과정을 숙달하며 배워 나갔다.
초보자에겐 어렵게 느껴지는 소스코드 병합과정과 모듈, 패키지, 라이브러리에 대한 용어와 활용분야 이해는 지속적으로 공부해 나가야 한다. "도전은 계속된다"
'학습 로그 > Python3' 카테고리의 다른 글
| D+17 [Team Project] KIOSK 영수증 부분 수정 및 보완 (0) | 2026.04.27 |
|---|---|
| D+15 [Team Project] 팀프로젝트 준비 (0) | 2026.04.27 |
| D+13 [Python] 함수 실습 (0) | 2026.04.17 |
| D+11 [Python] 리스트 실습 (0) | 2026.04.16 |
| D+12 [Python] 함수를 활용한 간단한 프로그램 만들기 (0) | 2026.04.16 |