반응형

Python/Debugging 37

poetry 환경 내에서 fasttext 설치 오류 해결 방법

오류 개요 poetry로 관리하는 패키지의 의존성으로 fasttext 모듈을 설치하는 과정에서 다음과 같은 오류가 발생하였습니다. Using version ^0.9.2 for fasttext Updating dependencies Resolving dependencies... (0.6s) Package operations: 1 install, 0 updates, 0 removals - Installing fasttext (0.9.2): Failed ChefBuildError Backend subprocess exited when trying to invoke get_requires_for_build_wheel /tmp/tmpp1lp42ow/.venv/bin/python: No module named pi..

Python/Debugging 2024.04.08

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

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

파이썬 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

ValueError: Precision not allowed in integer format specifier 원인 및 해결 방법

파이썬에서 f-string이나 format 함수를 활용한 문자열 포맷팅을 진행할 때, 포맷팅 문법을 잘못 사용하여 간혹 ValueError: Precision not allowed in integer format specifier 오류가 발생하는 경우가 있습니다. 이번 글에서는 해당 에러가 발생되는 원인과 해결 방법을 정리해보도록 하겠습니다. 에러 발생 예시 아래와 같이 f-string으로 정수 포맷팅을 시도하는 상황을 가정해보도록 하겠습니다. month = 2 day = 12 today = f'오늘은 {month:.02d}월 {day:.02d}일 입니다.' # ValueError: Precision not allowed in integer format specifier 여기서 해당 ValueError가..

Python/Debugging 2023.10.17

파이썬 json 저장 시에 한글이 \uac00처럼 깨져 보일 때 해결 방법

Python에서 json 파일을 저장하는 과정에서 한국어나 한자 등의 문자가 유니코드 형태(\uac00과 같은 형태)로 깨져 보이는 경우가 있습니다. 이런 경우에 글자 원본 그대로 인코딩되도록 변환하는 방법을 간략하게 정리하여 살펴보도록 하겠습니다. json 변환 시 글자가 유니코드로 저장되는 예시 아래 예제 코드와 같이 json.dump 혹은 json.dumps 메서드를 기본 설정으로 사용하여 json 양식을 저장하게되면 아래와 같이 유니코드 형태로 출력이 됩니다. import json data = {'이름': '가나다라마바사'} result = json.dumps(data) print(result) # {"\uc774\ub984": "\uac00\ub098\ub2e4\ub77c\ub9c8\ubc14\..

Python/Debugging 2023.10.15

셀레니움에서 텍스트 입력 시 줄 바꿈이 안될 때 해결 방법

파이썬의 selenium을 활용하여 텍스트 입력란에 자동 입력을 진행하는 경우, 홈페이지의 구조에 따라서 개행 문자인 '\n'이 일반 공백처럼 인식되어 줄 바꿈이 안되는 경우가 발생할 수 있습니다. 이럴 때, 엔터 키를 입력하여 줄 바꿈을 진행하면 해결이 가능한 경우가 있는데요. 이번 글에서 예시 코드를 간략하게 정리하여 살펴보도록 하겠습니다. 텍스트 입력 줄 바꿈 기본 방법 예제 개행행 문자가 포함된 문자열을 셀레니움을 통하여 텍스트 입력창에 입력하려는 경우, 일반적으로는 다음 코드처럼 진행하게 됩니다. from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() txt_box =..

Python/Debugging 2023.10.13

SyntaxError: 'await' outside function 원인 및 해결법

파이썬에서 asyncio 모듈로 비동기 처리 구현을 하는 과정에서 자주 발생할 수 있는 오류 종류인 SyntaxError: 'await' outside function에 대하여 발생 원인과 해결 방법을 간단하게 요약하여 정리해보도록 하겠습니다. 에러 발생 원인 일반적으로 py 파일을 실행하는 과정에서 다음과 같이 await 구문을 함수 밖 혹은 async 함수가 아닌 일반 함수 안에서 사용하려는 경우에 해당 구문 오류가 발생하게 됩니다. (await 구문은 비동기 함수 내에서만 호출이 가능합니다.) import asyncio await asyncio.sleep(5) # 함수 밖에서 사용 # 또는 def main(): # async가 아닌 일반 함수 내에서 사용 await asyncio.sleep(5) 오..

Python/Debugging 2023.10.09

셀레니움 오류 raise NoSuchElementException: Message: no such element: Unable to locate element 원인 및 해결법

파이썬의 selenium 모듈로 버튼 클릭이나 텍스트 입력 등 과정을 수행하기 위하여 필요한 객체를 찾는 과정에서 NoSuchElementException 에러가 자주 발생할 수 있습니다. 이번 글에서는 해당 오류의 대표 케이스들을 정리해보고 원인 및 해결 방법을 케이스별로 정리해보도록 하겠습니다. 셀레니움에서 일반적으로 name이나 id 등 속성으로 element를 찾는 방법은 아래와 같습니다. from selenium.webdriver.common.by import By a = driver.find_element(By.NAME, 'name_00') # name 속성 기준 탐색 b = driver.find_element(By.ID, 'id_01') # id 속성 기준 탐색 위 형태의 코드를 실행하는 과..

Python/Debugging 2023.09.25

JSONDecodeError: Expecting value: line 2 column 7 (char 8) / Expecting ',' delimiter 원인 및 해결법

Python으로 json 문자열 파싱 과정을 수행할 때 자주 발생하는 오류 케이스인 JSONDecodeError에 대하여 발생 원인과 해결 방법을 간략하게 정리해 보겠습니다. 정상적인 json 파싱 케이스 아래와 같이 정상적인 json 양식으로 저장된 문자열을 가정해 보겠습니다. txt = '{"a" : "123", "b" : {"c" : "456"}}' 이런 정상적인 양식의 문자열의 경우, json 모듈의 loads 메서드를 통하여 쉽게 파싱을 진행할 수 있습니다. import json txt_dict = json.loads(txt) print(txt_dict['b']['c']) # 456 오류 케이스 1: 딕셔너리 규칙이 지켜지지 않은 경우 json에서는 {}로 딕셔너리 자료형 시작과 끝을 표현하고,..

Python/Debugging 2023.09.23
반응형