Python 프로젝트를 관리하는 데는 가상환경 설정, 의존성 관리, 코드 스타일 가이드 등의 중요한 측면이 있습니다. 이들 각각의 기법을 활용하면 프로젝트를 효율적으로 관리하고, 다른 개발자와 협업하며, 일관된 코드를 유지할 수 있습니다.


Virtual Environment

가상환경(Virtual Environment)은 프로젝트마다 독립적인 Python 환경을 설정하여, 각 프로젝트가 서로 다른 라이브러리 버전을 사용할 수 있게 해줍니다. Python의 venvvirtualenv는 가상환경을 생성하는 데 사용되는 도구입니다.

venv

Python 3.3 이상에서는 venv가 기본적으로 제공됩니다. 가상환경을 만들고 활성화하는 방법은 다음과 같습니다.

# 가상환경 생성
python -m venv myenv

# Windows에서 가상환경 활성화
myenv\Scripts\activate

# macOS/Linux에서 가상환경 활성화
source myenv/bin/activate

# 가상환경 비활성화
deactivate

가상환경을 활성화하면, 프로젝트에 필요한 라이브러리들을 설치하고, 시스템에 영향을 주지 않도록 독립된 환경에서 작업을 진행할 수 있습니다.

virtualenv

virtualenvvenv보다 이전에 사용되던 도구로, Python 2와 Python 3 모두에서 사용 가능합니다.

# virtualenv 설치
pip install virtualenv

# 가상환경 생성
virtualenv myenv

# 가상환경 활성화 (Windows)
myenv\Scripts\activate

# 가상환경 비활성화
deactivate

Dependency Management

Python 프로젝트에서 의존성 관리는 필수적입니다. 프로젝트에 필요한 외부 라이브러리와 그 버전들을 관리하여, 다른 개발자와 협업할 때 동일한 환경을 유지할 수 있습니다. 대표적인 도구로는 pip, pipenv, poetry 등이 있습니다.

pip

pip는 Python의 기본 패키지 관리자입니다. requirements.txt 파일을 사용하여 의존성을 관리할 수 있습니다.

# 패키지 설치
pip install requests

# 설치된 패키지 목록 확인
pip freeze

# requirements.txt 파일로 저장
pip freeze > requirements.txt

# requirements.txt에서 패키지 설치
pip install -r requirements.txt

pip freeze는 현재 가상환경에 설치된 패키지와 버전 정보를 출력합니다. 이를 requirements.txt로 저장하면, 다른 개발자가 동일한 패키지를 설치할 수 있습니다.

pipenv

pipenvpipvirtualenv를 결합하여 의존성을 관리하는 도구입니다. PipfilePipfile.lock을 사용하여 의존성과 버전을 관리합니다.

# pipenv 설치
pip install pipenv

# 가상환경과 패키지 설치
pipenv install requests

# 패키지 목록 확인
pipenv graph

# 가상환경 활성화
pipenv shell

pipenv는 의존성을 자동으로 관리하고, PipfilePipfile.lock을 통해 정확한 버전의 패키지들을 기록합니다.

poetry

poetry는 의존성 관리와 빌드를 한 번에 처리할 수 있는 도구입니다. pyproject.toml 파일을 사용하여 의존성과 프로젝트 설정을 관리합니다.

# poetry 설치
pip install poetry

# 프로젝트 초기화
poetry init

# 패키지 설치
poetry add requests

# 가상환경 활성화
poetry shell

poetry는 더 발전된 의존성 관리 기능을 제공하며, 배포와 버전 관리도 함께 할 수 있습니다.


Code Style Guide

PEP 8은 Python 코드 작성 시 따라야 할 표준 스타일 가이드입니다. PEP 8을 준수하면 코드가 더 일관되고, 가독성이 좋아지며, 다른 개발자와의 협업이 쉬워집니다.

Guidelines

  • 들여쓰기: 공백 4칸 사용
  • 라인 길이: 79자 이하로 제한
  • 함수 및 변수 이름: 소문자와 밑줄을 사용하여 작성 (예: my_function)
  • 클래스 이름: 첫 글자를 대문자로 사용 (예: MyClass)
  • 주석: 주석은 코드의 의도를 설명하는 데 사용하며, 코드가 변경되면 주석도 업데이트해야 합니다.

Automation Tools

flake8

PEP 8 스타일을 검사하는 도구입니다. 코드 스타일이 맞지 않으면 경고를 발생시킵니다.

pip install flake8

flake8 myscript.py

black

코드를 자동으로 PEP 8 스타일에 맞게 포매팅해주는 도구입니다.

pip install black

black myscript.py

References