코드를 공유할 때 소스 파일만 있으면 같은 결과가 나올 것이라고 생각하기 쉽습니다. 하지만 Python 버전이나 설치된 패키지가 다르면 같은 코드도 다르게 동작할 수 있습니다. 이번 복습에서는 코드와 함께 남겨야 할 실행 환경 정보를 정리했습니다.
터미널에서 다음 명령을 실행하면 버전과 실행 파일의 경로를 확인할 수 있습니다.
python --version
python -c "import sys; print(sys.executable)"
python -m pip --version
첫 번째는 Python 버전, 두 번째는 실제 인터프리터 경로를 보여 줍니다. 세 번째는 해당 Python으로 실행한 pip의 버전과 설치 위치를 확인하는 명령입니다.
pip만 실행하면 의도한 Python과 다른 환경에 패키지를 설치할 수 있습니다. python -m pip처럼 실행하면 선택한 Python을 기준으로 pip를 호출하므로 연결 관계를 확인하기 쉽습니다.
IDE에서도 같은 인터프리터가 선택되어 있는지 확인해야 합니다. 터미널의 Python과 편집기의 실행 버튼이 사용하는 Python이 항상 같지는 않습니다.
프로젝트 폴더에서 다음과 같이 가상환경을 만들 수 있습니다.
python -m venv .venv
Windows PowerShell에서는 활성화 없이 실행 파일을 직접 지정하는 방법도 있습니다.
.\.venv\Scripts\python.exe --version
.\.venv\Scripts\python.exe -m pip --version
이 방식은 어떤 Python을 실행하는지 명령에 드러납니다. macOS나 Linux에서는 일반적으로 .venv/bin/python 경로를 사용합니다.
가상환경은 기본적으로 프로젝트별 패키지를 분리하지만 운영체제 전체를 격리하지는 않습니다. 외부 프로그램이나 시스템 라이브러리까지 동일하게 만들어 주는 기능은 아니라는 점을 구분해야 합니다.
Windows PowerShell에서 현재 가상환경의 패키지 목록을 기록하는 예시입니다. 기존 파일이 있다면 덮어쓰므로 먼저 내용을 확인합니다.
.\.venv\Scripts\python.exe -m pip freeze | Set-Content -Encoding utf8 requirements.txt
새 환경에서는 다음과 같이 설치할 수 있습니다.
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
pip freeze는 설치된 패키지를 requirements 형식으로 출력합니다. 프로젝트에 필요한 패키지만 자동으로 골라 주거나, 모든 환경에서 동일한 설치를 보장하는 잠금 파일을 만들어 주는 것은 아닙니다.
따라서 README에는 Python 버전, 운영체제, 실행 명령, 필요한 입력 파일의 위치도 함께 기록하는 편이 좋습니다. 외부 API를 사용한다면 필요한 환경변수의 이름을 안내하되 실제 키는 포함하지 않습니다.
실행 환경 기록은 “내 컴퓨터에서는 됐다”를 다른 환경에서도 검증할 수 있게 만드는 출발점입니다. 오류를 조사할 때도 코드 수정에 앞서 인터프리터와 패키지 버전부터 비교할 수 있습니다.