반응형
기본 프로젝트 구조
project_name/
├── project_name/
│ ├── __init__.py
│ ├── module1.py
│ ├── module2.py
│ └── ...
├── tests/
│ ├── __init__.py
│ ├── test_module1.py
│ ├── test_module2.py
│ └── ...
├── docs/
│ └── ...
├── scripts/
│ └── ...
├── .gitignore
├── requirements.txt
├── setup.py
└── README.md
디렉토리 및 파일 설명
프로젝트 루트 디렉토리 (project_name/): 프로젝트 전체를 포함하는 최상위 디렉토리입니다.
패키지 디렉토리 (project_name/): 실제 코드가 포함된 디렉토리로, 프로젝트 이름과 동일한 이름을 가지는 것이 일반적입니다.
- __init__.py
: 패키지로 인식되게 하는 파일입니다.
- module1.py
, module2.py
: 각종 모듈 파일들입니다.
테스트 디렉토리 (tests/): 테스트 코드가 포함된 디렉토리입니다.
- __init__.py
: 테스트 패키지로 인식되게 하는 파일입니다.
- test_module1.py
, test_module2.py
: 각 모듈의 테스트 파일들입니다.
문서 디렉토리 (docs/): 프로젝트 관련 문서들이 포함된 디렉토리입니다.
스크립트 디렉토리 (scripts/): 프로젝트와 관련된 유틸리티 스크립트들이 포함된 디렉토리입니다.
.gitignore: Git에서 무시할 파일 및 디렉토리를 명시합니다.
requirements.txt: 프로젝트의 의존성 패키지들을 명시한 파일입니다.
setup.py: 패키지 배포를 위한 설정 파일입니다.
README.md: 프로젝트에 대한 설명을 포함한 파일로, 일반적으로 프로젝트의 개요, 설치 방법, 사용법 등을 포함합니다.
예제 setup.py 파일
from setuptools import setup, find_packages
setup(
name='project_name',
version='0.1.0',
packages=find_packages(),
install_requires=[
'dependency1',
'dependency2',
# 더 많은 의존성
],
entry_points={
'console_scripts': [
'command_name=module:function',
],
},
author='Your Name',
author_email='your.email@example.com',
description='A brief description of the project',
long_description=open('README.md').read(),
long_description_content_type='text/markdown',
url='https://github.com/yourusername/project_name',
classifiers=[
'Programming Language :: Python :: 3',
'License :: OSI Approved :: MIT License',
'Operating System :: OS Independent',
],
python_requires='>=3.6',
)
예제 .gitignore 파일
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# PyCharm
.idea/
# mypy
.mypy_cache/
# Pycharm
.idea/
*.iml
*.iws
*.ipr
# VS Code
.vscode/
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
반응형
'개발 기본 규칙 및 환경 설정' 카테고리의 다른 글
[기본 규칙] Python 코딩 컨벤션 (0) | 2024.07.03 |
---|---|
[환경설정] Python 환경설정 (0) | 2024.07.03 |
[개발 기본 규칙] C++ 프로젝트 구조 (0) | 2024.06.08 |