반응형

Python 350

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

파이썬 pipenv 가상 환경 관리 기초(특징 및 명령어 정리)

파이썬 프로젝트를 conda 환경으로 관리하는 경우가 많지만, 때로는 pipenv로 가상 환경을 다루는 것이 큰 이점을 가져다주는 경우도 있습니다. 이번 글에서는 아주 간략하고 쉽게 pipenv의 특징과 장점 및 기본적인 명령어 몇 가지를 정리해보도록 하겠습니다. pipenv 특징 및 장점 pipenv가 conda와 구분되는 특징 중 가장 대표적인 내용은 다음과 같습니다. 디렉토리마다 가상 환경을 별도로 두는 것이 특징입니다.(한 가상 환경을 여러 프로젝트가 공유할 수 있는 conda와는 대비되는 특징입니다.) dev 버전에서만 필요한 의존성을 별도로 두고 관리할 수 있습니다. 패키지 버전 의존성을 관리하고 쉽게 배포 가능합니다.(Pipfile 및 Pipfile.lock 파일들로 관리됩니다.) 이 외에도..

Python/Utils 2023.10.08

ChatGPT API에서 이전 대화 기록을 반영하여 호출하는 방법

ChatGPT를 웹에서 직접 이용하는 경우에는 이전 대화를 기억하여 채팅을 이어나가지만, API를 통하여 호출하는 경우에는 기본적으로는 이전 대화를 기억해주지 않습니다. 그래도 API 함수의 기능에 이전 대화의 맥락을 바탕으로 새로운 답변을 생성하도록 만들어줄 수 있는 기능이 있는데요. 이번 글에서는 해당 내용에 대해서 살펴보도록 하겠습니다. 이전 대화 맥락 반영 ChatGPT API 호출 방법 ChatGPT API 호출 함수에서 이전 히스토리를 반영하는 방법은 messages 인자에 이전 맥락의 대화들을 순서대로 리스트로 묶어서 전달해주시면 됩니다. 여기서 role을 지정할 때, 제가 던진 질문은 user로, AI가 답변했던 내역은 assistant로 지정하여 순서대로 묶어서 전달해주어야 하는 점이 중..

Python/NLP Code 2023.10.07

Flask 디버그 모드란? / 사용 예제, 장점

파이썬 플라스크로 구현된 서버에서 오류가 발생할 경우, 웹사이트 상에서 에러 메시지가 보이지 않습니다. 이런 경우, 플라스크에 내장된 디버그 모드를 활용하면, 오류 상황을 조회할 수 있어 편리한데요. 이번 글에서는 Flask의 Debug 모드에 대해서 예제를 통하여 간단하게 살펴보도록 하겠습니다. 디버그 모드 미적용 경우 우선, 아래와 같은 간단한 기능을 플라스크를 통하여 실행해보도록 하겠습니다. 참고로, app.run에서 debug 인자의 기본 값은 False인 점을 참고해주세요. from flask import Flask app = Flask(__name__) @app.route('/') def square(number): return f'{number} ** 2 = {int(number) ** 2}..

Python/Backend 2023.10.05

파이썬에서 종료 시에 특정 함수를 실행하는 방법(atexit 모듈)

Python으로 작성한 py 파일 프로그램이 종료되는 때에 맞추어 특정 함수를 실행시켜보고 싶은 경우가 있습니다. 이 경우에 atexit 라이브러리를 활용하면 정상 종료, 오류로 인한 강제 종료의 경우를 모두 포함하여 원하는 기능을 간단하게 호출할 수 있습니다. 프로그램 종료 시점 함수 호출 기본 예제 만약 프로그램이 종료되는 시점에 exit_print라는 함수를 실행시키고 싶은 경우라면 다음과 같이 atexit 모듈의 register 메소드로 호출을 원하는 함수를 등록시켜주시면 됩니다. import atexit import time def exit_print(): print('프로그램이 종료됩니다!') atexit.register(exit_print) for i in range(5): print(f'남..

Python/Utils 2023.10.04

셀레니움 h1, strong 등 HTML 태그 적용 텍스트 삽입 방법 예제

파이썬의 selenium을 활용하여 텍스트를 입력하는 과정에서 h1이나 strong과 같은 HTML 태그가 적용된 텍스트로 입력을 원하는 경우가 있습니다. 이 글에서는 원하는 HTML 양식이 적용된 텍스트를 넣는 방법을 간략하게 정리해 보겠습니다. 참고: 셀레니움 기본 텍스트 입력 코드 예제 셀레니움에서는 일반적으로 find_element 등 메서드로 원하는 위치를 찾은 뒤에 send_keys 메서드를 활용하여 텍스트를 입력하게 됩니다. from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() txt_box = driver.find_element(By.NAME, 'txt_box_..

Python/Utils 2023.09.26

셀레니움 오류 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

파이썬 해시 함수 모듈 hashlib 사용법

Python에서 해싱을 간편하게 진행시킬 수 있도록 해주는 라이브러리인 hashlib에 대하여 간략하게 소개해보고 사용 방법 예시를 살펴보도록 하겠습니다. hashlib에서 지원하는 해시 함수 종류 hashlib에서는 과거에 많이 활용되던 방법인 MD5 등부터 비교적 최신 해시 알고리즘인 SHA-3, BLAKE2 등까지 많은 종류의 해시 함수를 제공하고 있습니다. 지원하는 해시 함수의 종류는 아래와 같이 확인이 가능합니다. import hashlib print(hashlib.algorithms_guaranteed) # {'shake_128', 'blake2b', 'sha256', 'sha3_384', 'sha3_512', 'sha224', 'sha3_256', 'shake_256', 'sha1', 'sh..

Python/Utils 2023.09.23

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

파이썬 FastAPI / Flask 로컬 서버 포트(127.0.0.1) 띄우기 방법 정리 및 차이 비교

Python에서 로컬 서버 포트 주소인 127.0.0.1:port에 해당하는 페이지를 띄우는 방법을 FastAPI와 Flask에서의 방법 차이를 기준으로 간략하게 정리해보도록 하겠습니다. FastAPI 서버 포트 띄우기 방법 FastAPI에서 로컬 서버 포트를 열기 위해서는 해당 모듈과 함께 uvicorn 모듈도 필요합니다. 아래 명령어를 통하여 간단히 설치가 가능합니다. $ pip install fastapi $ pip install uvicorn 다음과 같이 간단한 get 메서드를 지원하는 상황을 가정해보고, main.py 파일을 간단하게 작성해보도록 하겠습니다. from fastapi import FastAPI # FastAPI 객체 선언 app = FastAPI() # 기본 주소가 호출된 경우 실..

Python/Backend 2023.09.22
반응형