Python 애플리케이션을 위한 프로젝트 구조

Vaibhav Vaibhav 2023년1월30일
  1. Python 애플리케이션을 위한 프로젝트 구조
Python 애플리케이션을 위한 프로젝트 구조

실제 응용 프로그램에서 작업할 때 코드베이스의 크기가 크게 증가할 수 있습니다. 일반적으로 모놀리식 프로그램을 프로그래밍하거나 모든 응용 프로그램 코드를 하나의 파일에 넣는 것은 권장되지 않습니다. 같은 이유는 모놀리식 프로그램이 예상치 못한 버그를 더 많이 생성할 수 있기 때문입니다. 프로그램의 크기가 커지고 협업을 촉진하지 않으면 관리할 수 없고 읽을 수 없게 됩니다.

이러한 문제로 인해 애플리케이션을 다른 서비스와 독립적으로 지정된 작업을 수행하는 더 작은 세그먼트 또는 마이크로 서비스로 분할하는 것이 좋습니다. 이러한 설정을 통해 관리가 쉽고 간편할 뿐만 아니라 가독성과 생산성도 향상됩니다. 이 기사에서는 더 나은 관리, 가독성 및 생산성을 위해 일반적으로 Python 응용 프로그램을 구성하는 방법에 대해 설명합니다.

Python 애플리케이션을 위한 프로젝트 구조

아이디어는 프로그램을 더 작은 구성 요소 또는 마이크로 서비스로 분할하는 것입니다. 이들은 본질적으로 할당된 작업만 수행하는 Python 파일이 있는 일부 디렉터리입니다. 이들은 일반적으로 다른 서비스와 독립적인 독립 실행형 파일입니다. 이렇게 하면 서비스를 쉽게 제거하거나 추가할 수 있습니다.

언급된 디렉토리 또는 세그먼트 중 일부는 전 세계적으로 모든 애플리케이션에 적용되거나 적용되지 않을 수 있습니다. 일부 애플리케이션은 간단하고 많은 테스트 및 관리가 필요하지 않기 때문입니다. 동시에 일부는 꽤 길고 견고하며 지속적인 관심과 관리가 필요합니다.

이러한 디렉토리와 파일은 빈 상위 프로젝트 폴더 아래에 생성되어야 합니다.

  1. LICENSE: 이 파일에는 응용 프로그램 사용 지침 및 응용 프로그램 배포 세부 정보에 대한 법적 정보가 포함되어 있습니다.
  2. README.md: 이 마크다운 파일에는 응용 프로그램에 대한 간략한 설명, 해당 파일, 응용 프로그램 설정 및 실행 지침, 기여 지침, 응용 프로그램이 오픈 소스인 경우 등이 포함되어 있습니다.
  3. setup.py 또는 run.py: 이 파일은 모든 Python 응용 프로그램의 진입점입니다. 이것은 유사한 프로젝트 구조에 따라 Python 응용 프로그램을 실행할 때마다 이 파일을 간단하게 실행해야 함을 의미합니다.
  4. env 또는 environment: 애플리케이션의 Python 가상 환경입니다.
  5. requirements.txt: 이 텍스트 파일에는 Python 응용 프로그램의 종속성에 대한 정보가 포함되어 있습니다.
  6. /<sub-application>: 이 폴더에는 독립 실행형 하위 애플리케이션 또는 마이크로서비스가 포함됩니다. 이 폴더에는 __init__.py가 있어야 Python 모듈이 됩니다. Django 및 Flask 애플리케이션에서 각각 애플리케이션 및 청사진 형태로 이러한 폴더를 찾을 수 있습니다. 이러한 미니 애플리케이션 또는 마이크로서비스는 다른 애플리케이션과 독립적이므로 자체 /tests, /static, /templates 폴더와 models.pyforms.py 파일을 가질 수 있습니다.
  7. /docs: 이 폴더에는 Python 응용 프로그램의 설명서가 들어 있습니다. 문서는 일반적으로 최종 사용자가 문제 없이 응용 프로그램을 이해할 수 있도록 강력하고 포괄적이어야 합니다.
  8. /tests: 이 폴더에는 애플리케이션에 대한 모든 테스트가 포함됩니다. 테스트는 애플리케이션을 프로덕션으로 푸시하기 전에 필수적인 단계이므로 전용 디렉토리가 있어야 합니다. 애플리케이션이나 기능이 증가하면 테스트 수가 급격히 증가할 수 있습니다.
  9. /static: 이 폴더에는 이미지, 비디오, 로고 및 아이콘과 같은 응용 프로그램의 모든 정적 파일이 포함됩니다. 프로젝트가 웹 애플리케이션인 경우 정적 폴더에는 CSS 및 JavaScript 파일도 포함됩니다. Django 및 Flask 애플리케이션에서 이 폴더를 찾을 수 있습니다.
  10. /templates: 이 폴더에는 Python 응용 프로그램에서 사용하는 모든 HTML 템플릿이 들어 있습니다. 일반적으로 이 폴더는 웹에 HTML이 필요하기 때문에 Python 웹 애플리케이션과 관련이 있습니다. 다시 말하지만 Django 및 Flask 애플리케이션에서 이 폴더를 찾을 수 있습니다.
  11. models.py: 이 파일에는 데이터베이스 모델에 대한 Python 코드가 포함되어 있습니다. 데이터베이스 모델을 나타내는 Python 클래스는 ORM 또는 객체 관계형 매핑을 사용할 때 이 파일 내부에 정의됩니다.
  12. database.db: 이 파일은 Python 응용 프로그램에서 사용하는 데이터베이스입니다. 이 파일은 애플리케이션이 SQLite3와 같은 단순한 파일 기반 데이터베이스를 사용할 때만 필요하거나 생성됩니다.

웹 기반 개인 블로깅 웹사이트에서 작업하고 있다고 가정합니다. 그런 다음 이러한 응용 프로그램의 프로젝트 구조는 다음과 같습니다.

blog/
|-- LISCENSE
|-- README.md
|-- run.py
|-- models.py
|-- database.d
|-- environment/
    |-- * files *
|-- requirements.txt
|-- users/
    |-- __init__.py
    |-- forms.py
    |-- routes.py
    |-- * files *
|-- blogs/
    |-- __init__.py
    |-- forms.py
    |-- routes.py
    |-- * files *
|-- docs/
    |-- * files *
|-- tests/
	|--	users/
    	|-- * files *
    |-- blogs
	    |-- * files *
|-- static/
    |-- users
	    |-- * files *
    |-- blogs
	    |-- * files *
|-- templates/
    |-- users
	    |-- * files *
    |-- blogs
	    |-- * files *
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.