Flake8

Flake8 Flake8은 파이썬 코드를 위한 강력한 린팅(linting) 도구. 코드 스타일을 체크하고 잠재적인 버그를 감지하는 데 사용된다. 주요 특징 PEP 8 준수: Flake8은 파이썬의 공식 스타일 가이드인 PEP 8을 기반으로 코드를 분석한다. 통합 도구: PyFlakes, pycodestyle, McCabe 복잡도 체커를 하나로 통합한 도구이다. 확장성: 다양한 플러그인을 지원하여 기능을 확장할 수 있다. 빠른 실행 속도: 대규모 코드베이스에서도 빠르게 작동한다. ### 검사하는 주요 항목들 Flake8은 다양한 종류의 코드 품질 문제를 검사한다: PyFlakes를 통한 논리적 오류 검사: 사용되지 않는 임포트 참조되지 않는 변수 문법 오류 이름 공간 관련 문제 pycodestyle을 통한 PEP 8 준수 검사: 들여쓰기 줄 길이 공백 사용 명명 규칙 임포트 순서 McCabe 복잡도 검사: 함수와 메서드의 복잡도 측정 너무 복잡한 코드 블록 식별 리팩토링이 필요한 부분 감지 설치 및 기본 사용법 Flake8은 pip를 통해 쉽게 설치할 수 있다: ...

November 28, 2024 · 3 min · Me

YAPF(Yet Another Python Formatter)

YAPF(Yet Another Python Formatter) Google에서 개발한 파이썬 코드 포매터. 이는 마치 전문 편집자가 문서의 형식을 일관되게 정리하는 것처럼, 파이썬 코드의 스타일을 자동으로 정리해주는 도구이다. YAPF는 코드의 논리는 그대로 유지하면서, 가독성과 일관성을 높이는 방식으로 코드를 재구성한다. 주요 특징 다양한 스타일 지원: PEP 8, Google, Facebook 등 사전 정의된 스타일을 제공한다. 높은 구성 가능성: 사용자가 세부적인 포맷팅 규칙을 설정할 수 있다. 강력한 재포맷팅: PEP 8을 준수하는 코드도 더 나은 가독성을 위해 재구성한다. 장점 높은 유연성과 구성 가능성 다양한 내장 스타일 제공 단점 설정의 복잡성 때로는 비결정적인 포맷팅 결과 작동 방식 이해하기 YAPF는 파이썬 코드를 다음과 같은 단계로 처리한다: ...

November 28, 2024 · 3 min · Me

Pylint

Pylint Pylint는 파이썬 코드의 품질을 검사하고 개선하는데 도움을 주는 강력한 정적 코드 분석 도구. 장점 포괄적인 검사: 다양한 유형의 문제를 감지한다. 사용자 정의: 규칙을 커스터마이징할 수 있다. IDE 통합: 많은 개발 환경에 통합되어 있다. 단점 때때로 과도하게 엄격할 수 있다. 초기 설정이 복잡할 수 있다. 출력 형식 오류 코드, 행 번호, 문제 설명 등을 포함한 상세한 보고서를 제공한다. 주요 기능과 예시 코딩 스타일 검사: 파이썬의 공식 스타일 가이드인 PEP 8을 기준으로 코드 스타일을 검사한다. ...

November 28, 2024 · 3 min · Me

CGI

CGI(Common Gateway Interface) Python의 CGI(Common Gateway Interface)는 웹 서버와 외부 프로그램 간의 통신을 위한 표준 인터페이스. Python에서 CGI를 사용하면 동적 웹 콘텐츠를 생성할 수 있다. https://www.geeksforgeeks.org/what-is-cgi-in-python/ 주요 특징 웹 서버와 Python 프로그램 간의 통신 방식을 정의합니다. 클라이언트의 요청을 처리하고 동적으로 HTML 페이지를 생성합니다. 환경 변수와 표준 입출력을 통해 데이터를 주고받습니다. 프로그램의 구조 셔뱅 라인: #!/usr/bin/python3 필요한 모듈 임포트: import cgi CGI 필드 스토리지 객체 생성: form = cgi.FieldStorage() HTTP 헤더 출력: print(‘Content-type: text/html\n’) HTML 콘텐츠 생성 및 출력 장점 간단하고 이해하기 쉬운 구조 다양한 프로그래밍 언어 지원 웹 서버와 독립적으로 동작 단점 요청마다 새로운 프로세스를 생성하여 리소스 사용량이 많음 대규모 애플리케이션에서는 성능 저하 발생 가능 예시 코드 1 2 3 4 5 6 7 8 #!/usr/bin/python3 import cgi form = cgi.FieldStorage() name = form.getvalue('name', 'World') print('Content-type: text/html\n') print(f'<html><body><h1>Hello, {name}!</h1></body></html>') 이 코드는 사용자의 이름을 입력받아 인사말을 출력하는 간단한 CGI 프로그램. ...

November 28, 2024 · 1 min · Me

WSGI

WSGI(Web Server Gateway Interface) 파이썬 웹 애플리케이션과 웹 서버 간의 표준 인터페이스를 정의하는 규약이다. WSGI는 웹 서버와 웹 애플리케이션 사이에서 중개자 역할을 하며, 파이썬 웹 개발에서 중요한 역할을 담당한다. 웹 서버와 파이썬 애플리케이션의 관계를 생각해보면, 웹 서버(예: Apache, Nginx)는 HTTP 요청을 받아서 처리해야 하고, 파이썬 애플리케이션은 비즈니스 로직을 실행해야 한다. 이 둘을 연결하는 중간자 역할로 WSGI가 등장한다. WSGI는 2003년 PEP 333에서 처음 제안되었고, 현재는 PEP 3333에서 파이썬 3를 위해 업데이트되었다. WSGI는 웹 서버와 파이썬 웹 애플리케이션 사이의 표준 인터페이스를 정의한다. 표준화된 인터페이스가 있기 때문에, 어떤 WSGI 서버든 어떤 WSGI 애플리케이션이든 서로 호환되어 동작할 수 있다. ...

November 28, 2024 · 2 min · Me

setup.cfg

setup.cfg setup.cfg는 파이썬 프로젝트의 설정을 관리하는 구성 파일이다. 이 파일은 INI 형식으로 작성되며, setuptools가 프로젝트를 빌드하고 배포할 때 참조하는 중요한 설정들을 포함한다. 주요 특징 선언적 구성: setup.py에서 프로그래밍 방식으로 정의하던 설정을 보다 간단하고 명확한 형식으로 선언할 수 있습니다. 정적 메타데이터: 프로젝트의 이름, 버전, 설명 등 변경이 잦지 않은 정보를 저장하는 데 적합합니다. 도구별 설정: 다양한 개발 도구들의 설정을 한 곳에서 관리할 수 있습니다. 주요 섹션 [metadata]: 프로젝트의 기본 정보를 정의한다. 여기에는 프로젝트 이름, 버전, 작성자 정보, 라이선스 등이 포함된다. 이 정보는 PyPI에 패키지를 등록할 때 사용되며, pip로 패키지를 설치할 때 표시되는 정보의 기반이 된다. ...

November 27, 2024 · 2 min · Me

Poetry Configuration

Poetry Configuration config 명령어나 config.toml 파일을 통해 설정할 수 있다. 설정 파일은 운영 체제에 따라 다른 위치에 저장된다. 설정 관리 전역 설정: 기본적으로 Poetry는 전역 설정을 사용. 전역 설정 파일은 일반적으로 ~/.config/pypoetry/config.toml 경로에 위치. 로컬 설정: 특정 프로젝트에만 적용되는 설정을 위해 --local 옵션을 사용할 수 있다. 이 경우 설정은 프로젝트 디렉토리의 poetry.toml 파일에 저장. 설정 확인 및 수정 현재 설정 목록 보기: poetry config --list 특정 설정 값 보기: poetry config <설정명> 설정 추가/수정: poetry config <설정명> <값> 설정 제거: poetry config <설정명> --unset 환경 변수 사용 환경 변수를 통해 설정을 관리할 수 있다. 환경 변수는 POETRY_ 접두사를 사용하며, 설정 이름은 대문자로 작성하고 점(.)이나 대시(-)는 밑줄(_)로 대체한다. 가상 환경 경로를 지정하려면, ...

November 27, 2024 · 2 min · Me

Poetry Libraries

Poetry Libraries Poetry는 파이썬 라이브러리를 효율적으로 관리하고 배포할 수 있도록 지원하는 도구로 라이브러리를 설치 가능하게 만들기 위해 다음과 같은 절차를 따를 수 있다. 버전 관리 모든 프로젝트에 PEP 440을 준수하는 버전 번호를 요구한다. 버전 번호의 일관성을 유지하고, 패키지 관리 시스템과의 호환성을 보장한다. 1.0.0-hotfix과 같은 형식은 PEP 440과 호환되지 않는다. 1.0.0-post1 또는 1.0.0.post1과 같은 형식을 사용할 수 있다. PEP 440 파이썬 패키지의 버전 식별과 의존성 명시를 의한 표준을 정의한 문서. 파이썬 패키지의 버전 번호를 일관되게 관리하고, 패키지 간의 의존성을 명확하게 지정하여 호환성을 보장하는 데 목적이 있다. 버전 식별자 형식 1 [N!]N(.N)*[{a|b|rc}N][.postN][.devN] 각 요소의 설명 - N!: 에포크(epoch) 번호로, 버전 체계의 중대한 변경을 나타냄. - N(.N)*: 릴리스 번호로, 주 버전, 부 버전, 패치 버전 등을 포함. - {a|b|rc}N: 사전 릴리스(pre-release)로, 알파(a), 베타(b), 릴리스 후보(rc) 등을 나타낸다. - .postN: 포스트 릴리스(post-release)로, 버전 이후의 수정 사항을 나타낸다. - .devN: 개발 릴리스(development release)로, 개발 중인 버전을 나타낸다. ...

November 27, 2024 · 2 min · Me

Poetry Managing dependencies

Poetry Managing Dependencies Poetry는 의존성을 효율적으로 관리하기 위해 다양한 기능을 제공한다. 의존성 그룹을 활용하기 위해 개발, 테스트, 문서화 등 목적에 따라 의존성을 체계적으로 분류할 수 있다. 의존성 그룹 설정 의존성 그룹을 정의하려면 pyproject.toml 파일에 다음과 같이 섹션을 추가한다. <group_name>은 그룹의 이름을 의미하며, 예를 들어 테스트 관련 의존성은 test 그룹으로 정의할 수 있다. 1 2 3 4 5 6 7 [tool.poetry.group.<group_name>.dependencies] 패키지명 = "버전" # example [tool.poetry.group.test.dependencies] pytest = "^6.0.0" pytest-mock = "*" 의존성 그룹 설치 poetry install 명령어를 실행하면 모든 비선택적 그룹의 의존성이 설치된다. ...

November 27, 2024 · 1 min · Me

Poetry Usage

Poetry Usage 프로젝트 설정 poetry new 프로젝트명으로 새 프로젝트 생성 pyproject.toml 파일이 프로젝트와 의존성 관리의 중심 Python 버전 지정은 지원하려는 버전을 명시하는 것 의존성 지정 pyproject.toml의 [tool.poetry.dependencies] 섹션에 의존성 명시 poetry add 패키지명으로 의존성 추가 가능 가상 환경 사용 Poetry는 기본적으로 가상 환경을 생성하고 관리 poetry run으로 가상 환경 내에서 명령 실행 poetry shell로 가상 환경 활성화 버전 제약 조건 예: ^2.1은 2.1.0 이상 3.0.0 미만 버전 허용 의존성 설치 poetry install로 의존성 설치 poetry.lock 파일이 없으면 생성, 있으면 해당 버전으로 설치 poetry.lock 파일은 버전 관리에 포함하는 것이 좋음 의존성 업데이트 poetry update로 최신 버전으로 업데이트 운영 모드 기본 패키지 모드와 비패키지 모드 존재 비패키지 모드는 의존성 관리만을 위한 모드 기존 프로젝트 초기화 poetry init으로 기존 프로젝트에 Poetry 설정 추가 가능 참고 및 출처 Poetry Basic usage | Documentation | Poetry - Python dependency management and packaging made easy ...

November 27, 2024 · 1 min · Me