반응형

분류 전체보기 504

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

도커 파일 작성 기본 예제(파이썬 프로젝트 예시)

프로젝트 파일을 도커로 빌드하기 위해서는 Dockerfile 작성이 필요합니다. 이번 글에서는 간단한 Python 프로젝트에 대한 Dockerfile 작성 예제를 다루면서 도커 파일 작성 방법에 대한 기초를 살펴보도록 하겠습니다. Dockerfile 작성 방법 예시 다음과 같은 디렉토리 구조로 구성된 파이썬 프로젝트가 있다고 가정해 보겠습니다. /project-directory /utils util_file.py main.py Dockerfile requirements.txt 위의 프로젝트를 도커 환경에서 실행하기 위한 Dockerfile 예시 스니펫은 아래와 같습니다. # 사용할 Base Image 선택 FROM python:3.9-slim # 작업 디렉토리 설정 WORKDIR /app # 필요한 파일..

Infra/Docker 2023.09.27

셀레니움 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/Crawling 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

npm ERR! enoent ENOENT: no such file or directory 해결 방법

오류 개요 리액트 앱 생성 과정에서 다음과 같은 오류가 발생하였습니다. 시도했던 명령어 npx create-react-app my-app 에러 로그 메시지 npm ERR! code ENOENT npm ERR! syscall lstat npm ERR! path C:\Users\user\AppData\Roaming\npm npm ERR! errno -4058 npm ERR! enoent ENOENT: no such file or directory, lstat 'C:\Users\user\AppData\Roaming\npm' npm ERR! enoent This is related to npm not being able to find a file. npm ERR! enoent 오류 해결법 확인 결과 no suc..

파이썬 해시 함수 모듈 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

localhost 포트 페이지 "사이트에 연결할 수 없음" 원인과 해결 방법 정리

localhost:8000 처럼 포트를 직접 열어서 서버를 띄웠지만, 막상 페이지를 열었더니 "사이트에 연결할 수 없음" 메시지가 뜨면서 해당 페이지가 접속되지 않는 현상이 나타나는 경우가 있습니다. 이런 경우 가장 흔한 원인 몇 가지를 살펴보고 해결법을 간략하게 정리해보도록 하겠습니다. 1. 원격 환경에서 포트를 열었던 경우 현재 컴퓨터에서 다른 인스턴스를 사용 중이거나 구글 코랩 등 다른 환경에서 포트를 열었던 상태라면 로컬 컴퓨터에서는 ip 주소가 다르기에 localhost:8000에 해당하는 페이지가 로드되지 않을 수 있습니다. 이런 경우는 원격 환경에 해당하는 ip주소:8000 처럼 ip 주소를 기준으로 직접 접근하는 방법을 시도해보시거나 로컬 환경에서 포트를 여는 프로그램을 실행시켜주면 됩니다..

2023.09.20
반응형