[TOOL-012][실무] 새 컴퓨터에서도 같은 개발환경 다시 만들기 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[TOOL-012][실무] 새 컴퓨터에서도 같은 개발환경 다시 만들기

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 68회 작성일 26-09-06 05:35

본문

[이번 수업]

개발환경을 통째로 복사하지 않고, 새 컴퓨터에서 같은 상태를 다시 만드는 방법을 배웁니다. 작은 Python 프로젝트에 실행 버전, 의존성, 준비·실행·검증 명령을 기록해 깨끗한 환경에서 확인합니다.

[선수지식]

TOOL-003의 패키지와 의존성, TOOL-004의 Git, TOOL-009의 환경변수, TOOL-010의 비밀정보 관리, TOOL-011의 README를 알면 좋습니다.

[학습목표]

1. 재현 가능한 개발환경에 필요한 정보를 설명한다.
2. 가상환경을 새로 만들고 정해진 명령으로 프로그램을 실행한다.
3. 자동 테스트로 환경이 제대로 복원됐는지 확인한다.

[핵심개념]

재현 가능한 환경은 ‘내 컴퓨터 폴더 사본’이 아니라 다시 만들 수 있는 조리법입니다. 저장소에는 소스 코드, 필요한 실행 언어 버전, 의존성 목록, 설정 예시, 준비·실행·테스트 명령을 둡니다. 운영체제, CPU 구조, 외부 서비스처럼 저장소 밖 조건도 README에 적습니다.

가상환경은 프로젝트별 Python과 패키지를 분리한 폴더입니다. 다른 컴퓨터로 .venv를 복사하지 말고 그곳에서 새로 만드세요. 외부 패키지가 있다면 requirements.txt에 버전을 고정하고, 더 엄격한 검증이 필요하면 pip의 해시 확인 방식이나 사용하는 도구의 잠금 파일을 검토합니다. 단, 버전 고정은 보안 업데이트를 멈추라는 뜻이 아니므로 정기적으로 갱신하고 테스트해야 합니다.

[따라하기]

repeatable-demo 폴더를 만들고 다음 두 파일을 저장하세요. requirements.txt에는 외부 패키지가 없다는 주석만 씁니다.

requirements.txt
```text
# 외부 패키지 없음
```

app.py
```python
def greeting(name: str) -> str:
    clean = name.strip()
    if not clean:
        raise ValueError("이름이 비어 있습니다")
    return f"안녕하세요, {clean}!"

if __name__ == "__main__":
    print(greeting("개발자"))
```

test_app.py
```python
import unittest
from app import greeting

class GreetingTest(unittest.TestCase):
    def test_name(self):
        self.assertEqual(greeting(" 개발자 "), "안녕하세요, 개발자!")

    def test_empty_name(self):
        with self.assertRaises(ValueError):
            greeting("  ")

if __name__ == "__main__":
    unittest.main()
```

macOS·Linux에서는 아래처럼 실행합니다.
```sh
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.txt
python app.py
python -m unittest -v
```

Windows PowerShell에서는 활성화 명령만 `.venv\Scripts\Activate.ps1`로 바꿉니다. 실행 정책 때문에 막히면 활성화하지 않고 `.venv\Scripts\python.exe app.py`처럼 가상환경의 Python을 직접 호출할 수 있습니다. 예상 결과는 `안녕하세요, 개발자!`와 테스트 2개가 OK라는 표시입니다. 마지막으로 `.venv/`를 Git 제외 목록에 넣고, 새 폴더에 저장소를 다시 받은 상황을 가정해 같은 명령을 반복하세요.

[흔한 실수]

.venv나 설치된 패키지 폴더를 커밋하지 마세요. ‘최신 버전’처럼 모호하게 쓰거나 준비 순서를 README에서 빼면 결과가 달라집니다. 내 컴퓨터에서 실행됐다는 사실만으로 재현됐다고 판단하지 말고 깨끗한 환경에서 테스트합니다.

[보안 주의]

.env, 토큰, 개인 경로와 실제 사용자 데이터는 저장소에 넣지 않습니다. 설정은 값이 비어 있는 예시 파일만 제공하세요. 의존성 설치 전 출처와 변경 내용을 확인하고, 낯선 설치 스크립트는 본인 소유의 격리 환경에서 검토합니다.

[직접 해볼 과제]

README에 필요한 Python 버전, 준비·실행·테스트 명령을 순서대로 적으세요. 그 뒤 .venv를 지우고 문서만 보고 다시 만들어 테스트 2개가 통과하는지 확인합니다.

[확인문제]

1. 가상환경 폴더를 다른 컴퓨터로 복사하지 않는 이유는 무엇인가요?
2. 의존성 버전과 실행 명령을 함께 기록해야 하는 이유는 무엇인가요?
3. 환경 복원이 성공했는지 자동 테스트로 확인하면 어떤 점이 좋은가요?

[다음 학습]

PY-012에서 같은 원칙을 적용해 HTTP API를 사용하는 명령줄 도구를 만듭니다.

[공식 참고 자료]

https://docs.python.org/3/library/venv.html
https://pip.pypa.io/en/stable/topics/repeatable-installs/
https://pip.pypa.io/en/stable/reference/requirements-file-format/
https://git-scm.com/docs/git-clone

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
1,326
어제
5,103
최대
16,772
전체
772,380
Copyright © 소유하신 도메인. All rights reserved.