반응형

Python 350

TypeError: object async_generator can't be used in 'await' expression 해결 방법

오류 개요 Python의 generator 중 async로 구현된 경우가 있습니다. 이 경우 단순히 await로 데이터를 가져오려고 시도하면 에러가 발생합니다. async_gen = AsyncGenerator() data = await async_gen # TypeError: object async_generator can't be used in 'await' expression 디버깅 방법 다음과 같이 .__anext__() 기능을 활용하면 비동기로 구현된 generator에서 데이터를 순차적으로 가져올 수 있습니다. async_gen = AsyncGenerator() data = await async_gen.__anext__()

Python/Debugging 2024.03.08

파이썬 구글 이메일(Gmail) 보내기 SMTP 예제(파일 및 이미지 첨부 포함)

안녕하세요. 이번 글에서는 Python에서 이메일을 SMTP로 보내는 예제를 다루어보겠습니다. 가장 흔히 쓰는 메일 사이트 중 하나인 지메일을 예시로 들 것이며, 기본 텍스트 이메일부터 첨부 파일 및 본문 이미지가 포함된 심화 예시까지 전부 다루어보며 전반적인 과정에 대하여 이해를 해보도록 하겠습니다. 필요조건: 구글 보안 및 Gmail 설정 구글 이메일에서 smtp 프로토콜로 이메일 보내기 기능을 활용하려면, 구글 보안 및 Gmail에서 일부 설정 과정이 필요합니다. 이는 다음과 같습니다. 1. 구글 계정 페이지에서 앱 비밀번호를 검색합니다. (단, 메일을 보내려는 해당 계정에 2단계 인증이 활성화되어 있어야 합니다.) 2. 원하는 앱 비밀번호의 이름을 적고, 만들기를 진행합니다. 3. Gmail 페이..

Python/Utils 2024.03.06

파이썬 class __init__에서 async로 변수 초기화 하는 방법

Python에서 클래스를 구현할 때, 선언부인 __init__에서 비동기 함수에서 변수를 가져와 초기화하고 싶은 경우가 있습니다. 이 경우, __init__은 async로 직접 구현은 불가하지만, 이를 우회할 수 있는 방법이 있어 간략하게 정리해보도록 하겠습니다. __init__에서 비동기 선언이 필요한 코드 예시 다음과 같은 class가 있다고 가정해보도록 하겠습니다. 여기에서는 class의 value 속성에서 필요한 값을 불러와야 합니다. ### async def load_from_some_async_function(): # 비동기 함수를 불러와야 하는 상황 # do something ### class AsyncInitClass: def __init__(self): # async가 불가능! self...

Python/Utils 2024.02.20

파이썬 OPENAI 텍스트 임베딩 모델 사용 및 유사도 구하기 예제

Python으로 OPENAI에서 제공하는 text embedding 모델을 활용하여 텍스트의 임베딩 벡터를 구해보고, 문서 간 코사인 유사도를 구하는 예제를 간략하게 다루어보도록 하겠습니다. OPENAI 텍스트 임베딩 모델 사용 코드 예시 현재 비교적 최신 모델인 text-embedding-3-small, text-embedding-3-large와 기존 모델인 text-embedding-ada-002에 대한 임베딩 API를 OPENAI에서 제공 중입니다. (모델 상세 정보는 해당 링크의 openai 공식 document 페이지를 참고해주세요.) 우선, 문자열 1개에 대한 텍스트 임베딩 벡터를 구하는 파이썬 코드 예시는 다음과 같습니다. from openai import OpenAI # !pip insta..

Python/NLP Code 2024.02.14

AttributeError: 'NoneType' object has no attribute 'get' 원인 / 해결 방법

파이썬에서 중첩 딕셔너리 자료형 객체를 다루는 경우, 자주 발생 가능한 AttributeError: 'NoneType' object has no attribute 'get'오류의 원인과 해결법을 간략하게 정리해보도록 하겠습니다. 오류 개요 다음과 같이 'b'라는 key가 없는 딕셔너리에서 get 메서드 사용 이후, 추가로 get 메서드를 사용하려는 경우에 해당 에러가 발생합니다. data = {"a": {1: "a1", 2: "a2"}} a1 = data.get("a").get(1) # "a1" a3 = data.get("a").get(3) # None b1 = data.get("b").get(1) # 오류 발생! 위의 형태는 딕셔너리 중첩 형태(json 등)에서 내부 딕셔너리의 값을 호출하기 위해서 자..

Python/Debugging 2024.02.08

GPT 이미지+텍스트 멀티모달 API 활용 파이썬 코드 예제(gpt-4-vision-preview)

OPENAI에서 최근 공개된 gpt-4-vision-preview 모델을 활용하여 이미지의 정보를 같이 활용하여 GPT에게 질문을 하는 Python 코드 예시를 간략하게 다루어보도록 하겠습니다. 이 예제에서 사용한 이미지는 다음과 같은 고양이, 강아지가 2마리씩 있는 사진입니다. (출처는 pixabay 입니다.) OPENAI 이미지 활용 모델 사용 예제 이미지 input을 지원하는 gpt-4-vision-preview 모델로 이미지에 대한 질문을 던진 예시 파이썬 코드 스니펫은 다음과 같습니다. import openai # pip install openai OPENAI_API_KEY = "sk-..." # API KEY client = openai.OpenAI(api_key=OPENAI_API_KEY) ..

Python/NLP Code 2024.01.31

파이썬으로 동영상에 음악 넣기 방법(moviepy 활용)

Python의 moviepy 모듈을 활용하면 동영상에 wav, mp3 파일 등의 배경음을 손쉽게 삽입할 수 있는데요. 이 글에서 간략하게 음성 교체와 추가 삽입의 경우로 나누어 코드를 살펴보겠습니다. 1. 동영상 음악 교체 방법 동영상 파일에서 원하는 mp3 파일을 배경음으로 대체하는 코드는 다음과 같습니다. 이 코드 스니펫에서 기존 음성은 제거 후 대체됩니다. mp4 동영상 파일을 기준으로 코드를 작성한 결과는 다음과 같습니다. # 모듈 설치: !pip install moviepy from moviepy.editor import VideoFileClip, AudioFileClip def replace_audio_in_video(video_file_path, new_audio_file_path, outp..

Python/Utils 2024.01.22

파이썬으로 비디오(mp4 등) -> 오디오(mp3, wav 등) 추출하기(moviepy 활용)

Python에서 moviepy 모듈을 활용하여 mp4 등의 비디오 파일에서 음성을 mp3, wav 등의 오디오 파일로 추출하여 변환하는 방법을 간략하게 정리해보도록 하겠습니다. 오디오 변환 파이썬 예제 코드 비디오 파일에서 오디오 정보를 추출하는 파이썬 코드 스니펫은 다음과 같습니다. (mp4 -> mp3 예시) # 모듈 설치: !pip install moviepy from moviepy.editor import VideoFileClip def extract_audio_from_video(video_file_path, audio_file_path): # mp4 등 비디오 파일 불러오기 video = VideoFileClip(video_file_path) # 오디오를 추출하여 mp3 파일로 저장 video..

Python/Utils 2024.01.20

파이썬 multidict 설치 실패 해결 방법

안녕하세요. 이번 글에서는 Python에서 multidict 모듈을 설치하는 과정에서 발생 가능한 오류와 해결 방법을 간략하게 정리해보도록 하겠습니다. 오류 개요 aiohttp 모듈을 설치하던 과정에서 에러가 발생하였습니다. pip install aiohttp 파이썬은 3.12 버전을 사용하고 있었는데, aiohttp 모듈 설치 중 multidict 모듈이 필요한 것으로 보였고, 발생한 오류 메시지의 가장 앞과 뒤 부분의 내용은 다음과 같았습니다. error: subprocess-exited-with-error × Building wheel for multidict (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [74 lines of out..

Python/Debugging 2024.01.17

파이썬 테스트 케이스 모듈 unittest 사용법

Python에서 여러 테스트 케이스 항목들을 체크해야할 때, 유용하게 사용할 수 있는 unittest 모듈에 대하여 기본적인 예제를 중심으로 간략하게 사용법을 정리해보도록 하겠습니다. 참고로, uniittest 모듈은 별도의 설치가 필요 없는 파이썬 표준 라이브러리의 일부입니다. unittest 기본 작동 코드 포맷: unittest.Testcase unittest의 기본 사용법 특징을 정리하면 다음과 같습니다. 1. unittest.Testcase를 상속하여 테스트 클래스를 하나 정의합니다. 2. 테스트 클래스 내에 원하는 케이스들을 모아둔 함수들을 적고, self.assert____ 함수로 테스트 성공 조건을 적어줍니다. 예시로, add와 multiply라는 두 함수의 성공 여부를 테스트하는 간단한 ..

Python/Utils 2024.01.10
반응형