본문 바로가기

개발/파이썬

poetry와 github actions를 활용한 파이썬 라이브러리 배포 자동화 파이썬 개발을 하다 보면 필요한 라이브러리를 pip install 커맨드를 통해 쉽게 다운받아서 활용합니다. pandas, pydantic, fastapi 등 유명한 라이브러리가 많습니다. 이렇게 라이브러리를 설치해 사용하기도 하지만, 때로는 직접 라이브러리를 만들어서 배포하고 싶을 때가 있습니다. 파이썬에서는 어떻게 다른 사람들이 사용할 수 있는 라이브러리를 만들어 배포할까요? 오늘은 실습을 통해 직접 파이썬 라이브러리를 만들고, Github Actions를 이용해 라이브러리의 버전이 변경될 때마다 자동으로 배포하는 시스템을 만들어보겠습니다. poetry 소개 poetry는 의존성 관리 및 패키지 배포를 손쉽게 잘할 수 있도록 도와주는 도구입니다. poetry를 사용하지 않더라도 requirements..
SEO를 위한 sitemapr 라이브러리 소개: 구글에 서비스 페이지를 알려주자. 안녕하세요, 오늘은 제가 최근에 진행한 작은 사이드 프로젝트 'sitemapr'에 대해서 소개해 볼까 합니다. 프로젝트를 시작한 계기 광고비를 쓰지 않고도 (줄이고도) 서비스를 효과적으로 노출시키고 싶었습니다. 여러 가지 방법이 있겠지만, 저는 SEO를 잘하는 것이 무엇보다 중요하다고 생각했습니다. SEO란 '검색엔진 최적화'라는 의미로 검색엔진(e.g. Google)이 웹사이트의 내용을 효과적으로 파악하도록 웹페이지를 구조화하는 작업을 의미합니다. 최적화를 수행하기 위한 다양한 방법이 있지만, 검색엔진에 우리 서비스 페이지를 잘 알리는 것이 우선이라고 생각했습니다. 보통 검색엔진은 각 사이트에서 제공하는 사이트맵을 활용해서 페이지를 색인합니다. 블로그를 운영하고 있다면 보통..
파이썬 asyncio로 생산자/소비자 (Producer/Consumer) 패턴 구현하기 오늘은 파이썬에서 공식적으로 지원하는 비동기 라이브러리인 asyncio로 생산자/소비자 (Producer/Consumber) 패턴을 구현하는 방법에 대해서 다뤄보겠습니다. 해당 포스트에서 사용하는 모든 예시는 파이썬 3.11 버전 이상을 가정하고 있습니다. 비동기 프로그래밍과 생산자/소비자 (Producer/Consumer) 패턴 비동기 프로그래밍이란 비동기 프로그래밍은 모든 코드가 순차적으로 실행되는 동기식 프로그래밍과 달리, 작업에 대기가 발생했을 때 (e.g., 네트워크 요청 후 응답) 해당 작업이 끝나기 전까지 다른 작업을 수행하는 프로그램 방식을 의미합니다. 이를 통해 네트워크 입출력(I/O)와 같이 대기가 발생하는 일을 처리할 때 성능을 높일 수 있다는 장점이 있습니다. 보다 자세한 내용은 이..
vscode에서 파이썬 개발환경 세팅하기 (가상환경, 개발도구) 안녕하세요, 이번 포스트에서는 vscode로 파이썬 개발을 시작하기 위해 개발 환경을 구성하는 방법에 대해서 다루어보겠습니다. 파이썬 관리 도구 및 가상환경, 패키지 매니저, 그리고 스타일 및 정적검사를 위한 개발 도구까지 소개해 보도록 하겠습니다. 파이썬으로 프로젝트를 구성하시는 분들에게 많은 도움이 되었으면 합니다. vscode 설치하기 우선 당연하게도 vscode를 설치해야 합니다. 아래 링크를 통해 본인의 환경에 맞는 vscode를 설치합니다. https://code.visualstudio.com/download 파이썬 설치 파이썬을 공식 홈페이지를 통해 설치할 수도 있지만, 저희는 pyenv라는 도구를 활용할 계획입니다. pyenv는 파이썬 버전을 쉽게 바꿀 수 있게 도와주는 툴입니다. 프로젝트..
파이썬 예제로 보는 직접 의존성과 간접 의존성 의존성 (Dependencies) 없는 프로그램은 존재하지 않습니다. 소프트웨어의 일부분(함수, 클래스, 모듈 등)은 어떤 기능을 수행하기 위해 다른 부분에 의존하고 있습니다. 그리고 의존성은 직접 의존성 (또는 명시적 의존성, Explicit Dependencies)과 간접 의존성 (또는 암시적 의존성, Implict Dependencies)으로 나눌 수 있습니다. 이번 포스트에서는, 이러한 의존성들의 정의와 각각의 장단점에 대해서 알아보는 시간을 가져보도록 하겠습니다. 😎 직접 의존성 직접 의존성은 어떤 함수나, 클래스가 각자의 인터페이스를 통해 '의존 대상'에 직접적으로 의존하고 있는 것을 의미합니다. 의존 대상이 인터페이스에 직접적으로 정의되어 있기 때문에 인터페이스만 보고도 의존하..
정규표현식의 표현식 그룹 이름 지정 (Named Capture Group)에 대해 알아봅시다. 정규표현식에서 ?P을 원하는 패턴 앞에 써주면 특정 표현식에 대해 이름으르 그룹을 지정할 수 있습니다. 예를 들어, 아래와 같이 사용하면 major, minor, patch 라는 이름으로 표현식 그룹을 만들 수 있습니다. (?P\d+)\.(?P\d+)\.(?P\d+) 괄호로 묶는 범위만큼 그룹이 생성되어 특정 그룹을 지정할 수 있습니다. (정규표현식에서 이렇게 일부 패턴을 뽑아내는 것을 캡처(Capture)라고 부릅니다.) 파이썬에서는 아래와 같이 사용할 수 있습니다. import re m = re.search(r"v(?P\d+)\.(?P\d+)\.(?P\d+)", "v1.2.3") m.group('major') # '1' m.group('minor') # &#..
파이썬 Typing 파헤치기 - 심화편 지난 글 '파이썬 Typing 파헤치기 - 기초편'에서는 Typing의 기본적인 내용과 8개의 타입에 대해 다루어봤습니다. 이번 포스트에서는 조금 더 심화된 타입들에 대해 다뤄보도록 하겠습니다. 심화 타입 알아보기 1. tying.Callable[..., ReturnType] 지난 포스트에서 typing.Callable에 대해서 간단하게 다뤄봤습니다. 함수를 인자로 받는 경우에 Callable 타입을 활용하면 된다고 했습니다. def on_some_event_happened(callback: Callable[[int, str, str], int]) -> None: ... def do_this(a: int, b: str, c:str) -> int: ... on_some_event_happen..
파이썬 Typing 파헤치기 - 기초편 동적 언어에서의 타입 검사파이썬은 동적 언어로 잘 알려진 언어입니다. 즉, 변수의 타입을 일일이 명시하지 않아도 되고, 특정 변수의 타입이 중간에 바뀌어도 됩니다. 파이썬과 같은 동적 언어는 C, Java, Rust 등의 정적 언어보다 배우기도 쉽고, 좀 더 빠르게 프로그래밍이 가능하다는 장점이 있습니다. 하지만, 잘못된 타입을 사용하여 예상치 못한 에러를 만들어내고, 이로 인해 프로그램이 망가질 수 있다는 단점도 있습니다. 코드 양이 많아지고 복잡해질수록 잘못된 타입으로 인한 에러를 만날 확률이 높아지겠죠.따라서 최근에는 이런 동적 언어들에도 타입을 명시하고 검사하고자 하는 수요가 늘어나고 있습니다. Javascript계열에서는 Typescript가 많은 인기를 얻고 있으며, 파이썬 같은 경우도 3.5..