본문 바로가기
2. Data Science Basics/Python

Python 스크립트 폴더 정리방법

by Mojito 2023. 11. 27.

 

 

로젝트를 하다보면 코드가 점점 더 길어지고 복잡해짐으로서 관리하기 힘들어집니다. 더 나은 유지 관리성과 확장성을 위해 Python 프로젝트를 구성하려면 파일과 디렉터리를 효율적으로 구성해야 합니다. 아래는 제가 프로젝트 경험을 하며 github을 참고하여 폴더를 정리하는 방법을 적어두었습니다.

 

  1. 루트 디렉터리(프로젝트 이름)
    • 주요 파일과 디렉토리가 포함되어 있습니다. 이름은 프로젝트를 반영해야 합니다.
  2. src 디렉터리(소스 코드)
    • 이 디렉토리에는 모든 Python 스크립트가 포함됩니다. 소스 코드를 다른 유형의 파일(예: 구성 파일, 문서 등)과 분리하면 프로젝트가 더 깔끔하고 관리하기 쉬워집니다.
  3. 데이터 디렉토리
    • 데이터 파일을 저장하는 데 사용됩니다. 데이터를 소스 코드와 별도로 유지하는 것이 좋습니다.
  4. 테스트 디렉토리
    • 모든 테스트 스크립트가 포함되어 있습니다. 강력한 코드베이스를 유지하려면 테스트 전용 디렉터리를 갖는 것이 중요합니다.
  5. requirements.txt
    • 프로젝트에 필요한 모든 Python 종속성을 나열합니다. 이는 다른 컴퓨터에서 프로젝트를 실행하려는 모든 사람에게 필수적입니다.
  6. README.md
    • 프로젝트 개요, 설정 방법, 사용 방법을 제공하는 마크다운 파일입니다. 이는 협업과 향후 참조를 위해 매우 중요합니다.
  7. .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

 

위와같이 각 폴더에 패키지의 초기화 코드를 이용하면 폴더 관리를 조금 효율적으로 관리 할 수 있습니다.

반응형

댓글