프로젝트를 하다보면 코드가 점점 더 길어지고 복잡해짐으로서 관리하기 힘들어집니다. 더 나은 유지 관리성과 확장성을 위해 Python 프로젝트를 구성하려면 파일과 디렉터리를 효율적으로 구성해야 합니다. 아래는 제가 프로젝트 경험을 하며 github을 참고하여 폴더를 정리하는 방법을 적어두었습니다.
- 루트 디렉터리(프로젝트 이름)
- 주요 파일과 디렉토리가 포함되어 있습니다. 이름은 프로젝트를 반영해야 합니다.
- src 디렉터리(소스 코드)
- 이 디렉토리에는 모든 Python 스크립트가 포함됩니다. 소스 코드를 다른 유형의 파일(예: 구성 파일, 문서 등)과 분리하면 프로젝트가 더 깔끔하고 관리하기 쉬워집니다.
- 데이터 디렉토리
- 데이터 파일을 저장하는 데 사용됩니다. 데이터를 소스 코드와 별도로 유지하는 것이 좋습니다.
- 테스트 디렉토리
- 모든 테스트 스크립트가 포함되어 있습니다. 강력한 코드베이스를 유지하려면 테스트 전용 디렉터리를 갖는 것이 중요합니다.
- requirements.txt
- 프로젝트에 필요한 모든 Python 종속성을 나열합니다. 이는 다른 컴퓨터에서 프로젝트를 실행하려는 모든 사람에게 필수적입니다.
- README.md
- 프로젝트 개요, 설정 방법, 사용 방법을 제공하는 마크다운 파일입니다. 이는 협업과 향후 참조를 위해 매우 중요합니다.
- .gitignore(Git를 사용하는 경우)
- 의도적으로 추적되지 않은 파일을 무시하도록 지정합니다(예: Python 바이트코드, 로그 등).
조금 더 이해하기 쉽게 예를 들어 보겠습니다. 간단한 웹 기반의 도서 관리 시스템입니다. 이 시스템은 도서 추가, 도서 검색, 사용자 관리 기능을 포함할 것입니다.
book_management_system/
│
├── src/
│ ├── app.py # Main application file
│ ├── models/ # Data models
│ │ ├── __init__.py
│ │ ├── book.py
│ │ └── user.py
│ ├── services/ # Business logic
│ │ ├── __init__.py
│ │ ├── book_service.py
│ │ └── user_service.py
│ └── utils/ # Utility functions
│ ├── __init__.py
│ └── database.py
│
├── data/ # Data files for the application
│ ├── books.json # Example book data in JSON format
│ └── users.json # Example user data in JSON format
│
├── tests/ # Test cases
│ ├── test_book_service.py
│ └── test_user_service.py
│
├── requirements.txt # Project dependencies
└── README.md # Project documentation
app.py : 웹 서버와 경로가 정의된 주 응용프로그램 파일.
models/: 응용프로그램의 데이터 모델을 포함합니다.
services/: 도서 및 사용자와 관련된 작업을 처리하기 위한 비즈니스 로직을 포함합니다.
utils/: 데이터베이스 연결 및 작업과 같은 유틸리티 코드를 포함합니다.
tests/ Directory: 응용프로그램의 테스트 케이스를 포함합니다.
requirements.txt: 프로젝트가 의존하는 모든 Python 패키지를 나열합니다.
README.md : 프로젝트 설정 및 사용에 대한 개요와 지침을 제공합니다.
각 폴더의 __init__.py 파일의 역할은 파이썬 패키지(본질적으로 __init_.py 파일이 있는 디렉터리)를 만들면 패키지의 모듈을 가져올 때 __init_.py 파일이 실행됩니다. 이 파일은 패키지의 초기화 코드를 실행하거나 패키지가 외부에 노출하는 기호를 정의하는 데 사용할 수 있습니다.
간단히 말하면 __init_.py는 패키지를 위한 게이트키퍼로 볼 수 있습니다. 패키지를 가져올 때 패키지 외부에서 액세스할 수 있는 것을 제어합니다. 예를들어, 아래와 같이 init 해두면,
services/__init__.py
.book_service import Book_Service
.user_service import User_service
응용스크립트나 메인스크립트에서 간단하게 불러와서 사용 가능합니다.
from services Book_Service, User_service
위와같이 각 폴더에 패키지의 초기화 코드를 이용하면 폴더 관리를 조금 효율적으로 관리 할 수 있습니다.
'2. Data Science Basics > Python' 카테고리의 다른 글
데이콘 쇼핑몰 지점별 매출액 예측 경진대회 (TOP 10%) (0) | 2022.08.08 |
---|---|
[논문분석] 머신러닝에서 유의미한 Feature 쉽게 구분해내기 (0) | 2022.05.30 |
Dynamic Time Warping을 이용하여 비슷한 주식 clustering 하기 (1) | 2022.03.03 |
Dynamic Time Warping (DTW) (0) | 2022.03.02 |
Python 을 이용하여 MDD / Sharp Ratio 구하기 (0) | 2022.01.03 |
댓글