안녕하세요! 코드를 사랑하는 여러분. 😊 개발 프로젝트를 새로 시작하거나, 다른 사람의 코드를 테스트해볼 때마다 반복하는 작업이 있죠. 바로 터미널을 열고, `git clone [저장소 주소]`를 입력하고, `cd [폴더명]`으로 이동해서, `python [파일명].py`를 실행하는 과정 말이에요. 저도 이 과정이 은근히 귀찮게 느껴질 때가 많았어요.
그래서 오늘은 이 모든 과정을 단 한 번의 파이썬 스크립트 실행으로 끝내는 방법을 공유해볼까 합니다. 이 방법을 사용하면 개발 초기 세팅 시간을 확 줄이고, 실수를 예방하며, 무엇보다 귀찮음에서 해방될 수 있답니다! 🚀
왜 파이썬으로 자동화해야 할까요? 🤔
물론 셸 스크립트로도 충분히 가능하지만, 파이썬을 사용하면 몇 가지 장점이 있습니다.
- 플랫폼 독립성: 윈도우, 맥, 리눅스 어디서든 거의 동일한 코드로 작동합니다.
- 유연한 확장성: 단순 실행뿐만 아니라, 클론 후 특정 파일을 수정하거나, 라이브러리를 설치하는 등 복잡한 로직을 쉽게 추가할 수 있습니다.
- 에러 처리: 파이썬의 `try-except` 구문을 이용해 각 단계별로 발생할 수 있는 오류를 섬세하게 제어하고 로그를 남기기 용이합니다.
핵심 준비물: 파이썬 내장 모듈 `subprocess` 🛠️
놀랍게도 이 자동화를 위해 별도로 설치해야 할 라이브러리는 없습니다! 파이썬에 기본적으로 내장된 `subprocess` 모듈을 사용할 거거든요. 이 모듈은 파이썬 스크립트 내에서 터미널 명령어(예: `git clone`)를 실행할 수 있게 해주는 아주 강력한 도구입니다.
`subprocess` 모듈은 파이썬이 운영체제의 셸과 대화할 수 있게 해주는 다리 역할을 합니다. 이를 활용하면 Git 명령어뿐만 아니라 시스템에 설치된 거의 모든 커맨드라인 도구를 파이썬으로 제어할 수 있습니다.
전체 파이썬 코드 살펴보기 💻
백문이 불여일견이죠! 바로 전체 코드를 보여드릴게요. 코드는 아주 간단합니다.
Git 클론 및 스크립트 실행 자동화 코드 📝
import subprocess
import os
import shutil
# --- 설정 부분 ---
# 복제할 Git 저장소 주소
repo_url = "https://github.com/user/repository.git"
# 저장소를 복제할 로컬 폴더 이름
clone_dir = "my_temp_repo"
# 실행할 파이썬 파일 이름
script_to_run = "test.py"
# -----------------
# 1. 기존 폴더가 있다면 삭제 (매번 새로 클론하기 위함)
if os.path.exists(clone_dir):
print(f"'{clone_dir}' 폴더가 이미 존재하여 삭제합니다.")
shutil.rmtree(clone_dir)
try:
# 2. Git 저장소 클론
print(f"'{repo_url}' 저장소를 클론합니다...")
subprocess.run(["git", "clone", repo_url, clone_dir], check=True, capture_output=True, text=True)
print("✅ 클론 완료!")
# 3. 실행할 스크립트 경로 설정
script_path = os.path.join(clone_dir, script_to_run)
if not os.path.exists(script_path):
print(f"🚨 오류: '{script_path}' 파일을 찾을 수 없습니다.")
else:
# 4. 클론한 저장소의 파이썬 스크립트 실행
print(f"'{script_path}' 파일을 실행합니다...")
result = subprocess.run(["python", script_path], check=True, capture_output=True, text=True)
print("✅ 스크립트 실행 완료!")
# 스크립트 실행 결과 출력
print("\n--- 스크립트 실행 결과 ---")
print(result.stdout)
print("--------------------------")
except subprocess.CalledProcessError as e:
print("🚨 오류가 발생했습니다.")
print(f"명령어: {e.cmd}")
print(f"종료 코드: {e.returncode}")
print(f"에러 출력:\n{e.stderr}")
except Exception as e:
print(f"🚨 예상치 못한 오류 발생: {e}")
코드 상세 분석: 한 줄 한 줄 뜯어보기 🔍
코드가 어떻게 작동하는지 단계별로 자세히 알아볼까요?
- 설정 변수 지정: 코드 상단의 `repo_url`, `clone_dir`, `script_to_run` 변수만 원하는 값으로 바꿔주면 됩니다. 재사용성을 높이기 위해 따로 빼두었어요.
- 기존 폴더 삭제: `os.path.exists()`로 폴더 존재 여부를 확인하고, `shutil.rmtree()`로 폴더 안의 모든 내용을 깨끗하게 삭제합니다. 이렇게 하면 매번 실행할 때마다 최신 상태의 저장소를 새로 받아올 수 있습니다.
⚠️ 주의하세요!
`shutil.rmtree()`는 지정된 폴더와 그 안의 모든 파일을 영구적으로 삭제하는 강력한 명령어입니다. 실수로 중요한 폴더를 지정하지 않도록 `clone_dir` 경로를 주의해서 설정해야 합니다. - Git 클론 실행: `subprocess.run(["git", "clone", repo_url, clone_dir], check=True)` 이 부분이 핵심입니다. 터미널에서 `git clone ...` 명령을 실행하는 것과 똑같아요. `check=True` 옵션 덕분에 만약 클론 과정에서 오류가 발생하면 스크립트가 즉시 중단되어 문제를 바로 알 수 있습니다.
- 파이썬 스크립트 실행: 클론이 성공하면 `os.path.join()`으로 실행할 파일의 전체 경로를 만듭니다. 그리고 다시 `subprocess.run(["python", script_path], ...)`를 호출하여 해당 파일을 실행합니다. 이번에는 `capture_output=True`와 `text=True`를 추가해서 실행 결과를 변수에 저장하고, 마지막에 예쁘게 출력해주었죠.
파이썬 Git 자동화 한눈에 보기
자주 묻는 질문 ❓
어떤가요? 생각보다 훨씬 간단하죠? 이 스크립트 하나만 만들어두면 앞으로 새로운 프로젝트를 시작하거나 테스트할 때 정말 편리할 거예요. 여러분도 자신만의 자동화 스크립트를 만들어 보세요!
오늘 내용과 관련해서 더 궁금한 점이 있거나, 자신만의 멋진 활용법이 있다면 언제든지 댓글로 공유해주세요! 😊
'Code Story' 카테고리의 다른 글
MCP 개발 상세 가이드 (튜토리얼) (6) | 2025.06.29 |
---|---|
LangGraph 개발 가이드 요약 및 참고사이트 (2) | 2025.06.18 |
NL2SQL 쿼리의 자동 검증 방안 (2) | 2025.06.17 |
LLM 핵심 기술 심층 분석 요약 (3) | 2025.06.17 |
LLM 핵심 기술에 대해서... (0) | 2025.06.17 |