Python 28

pyaudio 설치가 잘 안되는 경우

pip3 install pyaudio 알다시피, 파이썬 라이브러리를 설치하려는 경우 "pip install"을 사용하는 것이 일반적이다. 음악 관련 대표적인 파이썬 라이브러리인 pyaudio를 설치하는 경우에도 pip을 사용하게 된다. 그런데, 위의 방법으로 설치를 진행하려고 하면 알 수 없는 이유로 인하여 pyaudio의 설치가 진행되지 않는 경우가 발생하곤 한다. pyaudio 설치 오류 원인은 십중팔구 portaudio 때문이다. portaudio는 음악 재생 및 녹음을 위한 오픈소스 크로스 플랫폼 소프트웨어로 리눅스, 윈도우, 그리고 맥북에서 사용이 가능하다. pyaudio는 내부에서 이 portaudio를 사용하는데, 이 portaudio가 설치되어 있지 않거나, 제대로 설치가 안 되어 있거나,..

Python 2022.09.14

googletrans 'NoneType' object has no attribute 'group' 해결법

pip install googletrans 위의 방법을 통해서 google trans를 설치하게 되면 번역 기능을 실행할 때 다음 에러가 발생한다: AttributeError: 'NoneType' object has no attribute 'group' 이를 해결하는 가장 간단한 방법은 이미 깔려있는 버전을 지우고 에러가 없는 버전으로 다시 설치하는 것이다. pip uninstall googletrans pip install googletrans==3.1.0a0 이제는 번역 기능을 실행해도 에러가 안 나올 것이다. from googletrans import Translator translator = Translator() print(translator) sentence = input("언어를 감지할 문장..

Python 2022.07.28

onnxruntime 실행 시 (core-dump) 에러가 발생할 경우 해결법

onnxruntime을 실행시킬 때 "Illegal Instruction (core-dumped)" 라는 에러 메세지를 마주할 수 있다. 이 경우, numpy의 버전을 바꿔보도록 하라. numpy==1.19.5 버전을 사용할 경우 해당 에러가 날 수 있다. 따라서, numpy==1.19.4 버전 혹은 그 하위 버전을 설치한 뒤, onnxruntime의 버전 역시 낮추고 (onnxruntime의 일정 버전 부터는 numpy==1.19.5 이상을 요구한다) 다시 실행시켜보면 잘 작동한다. https://github.com/onnx/onnx/issues/3268#issuecomment-777629332 Illegal instruction (core dumped) · Issue #3268 · onnx/onnx ..

Python 2022.04.01

requirements.txt 활용하기

파이썬으로 짠 코드를 배포 및 이동할 때, 해당 프로젝트에서 쓴 라이브러리들의 버전을 그대로 사용하기 위해서 파이썬 유저들이 사용하는 방법이 바로 requirements.txt를 활용하는 것이다. 이 텍스트 파일 안에 사용한 코어 라이브러리들의 이름과 버전 (혹은 최소 버전)을 입력한 뒤, 배포 및 이동할 때 이 파일을 동봉함으로써 다른 기기에서 해당 프로젝트를 실행시키기 전 같은 환경을 구축할 수 있게 해준다. 이 글에서는 requirements.txt를 활용해 환경을 구축하는 방법과, 이미 구축된 환경에서 requirements.txt를 만드는 방법을 소개한다. 1. requirements.txt를 사용해 환경 구축 및 라이브러리 설치 pip install -r requirements.txt 혹은 p..

Python 2022.04.01

socket.send()와 sendall()

파이썬에서 소켓 프로그래밍을 하다보면 socket.sendall()을 사용하는 예제를 많이 보게 될 것이다. 그런데, 만약 API reference를 보게 되면, socket.send() 메소드 역시 존재한다는 것을 보게 될 것이다. 쉽게 말해, socket.send()는 c언어에서 쓰는 소켓의 send() 시스템콜 함수를 그대로 파이썬에서 사용하는 것으로, 주어진 메세지를 다 보낼 수도 있고 아닐 수도 있으며, 전송한 데이터의 크기를 리턴해주는 굉장히 로우레벨의 기능을 담당한다. 반면, sendall()은 파이썬 기반의 high-level 메소드로 버퍼 내의 모든 데이터를 전송하는 기능을 수행한다.

Python 2022.03.30

heapq

데이터를 정렬된 상태로 저장하기 위해서 사용하는 파이썬의 heapq(힙큐) 내장 모듈에 대해서 알아보겠습니다. 힙 자료구조 heapq 모듈은 이진 트리(binary tree) 기반의 최소 힙(min heap) 자료구조를 제공합니다. 자바에 익숙하신 분이라면 PriorityQueue 클래스를 생각하시면 이해가 쉬우실 것 같습니다. min heap을 사용하면 원소들이 항상 정렬된 상태로 추가되고 삭제되며, min heap에서 가장 작은값은 언제나 인덱스 0, 즉, 이진 트리의 루트에 위치합니다. 내부적으로 min heap 내의 모든 원소(k)는 항상 자식 원소들(2k+1, 2k+2) 보다 크기가 작거나 같도록 원소가 추가되고 삭제됩니다. heap[k]

Python 2022.03.24

AttributeError: probability estimates are not available for loss='hinge'

scikit-learn에서 SGDClassifier나 SVM 모델을 훈련시키다보면 "AttributeError: probability estimates are not available for loss='hinge' ..."과 같은 에러 메세지를 마주하게 될 것이다. 에러 메세지에서 말해주듯이 hinge 손실 함수가 문제가 되어서 에러가 발생한 것이다. 대표적인 예로, hinge를 손실 함수로 사용하는 SGDClassifier 객체가 predict_proba() 메소드를 사용하게 되면 위와 같은 에러를 발생시키게 된다. 이 예시에서 에러가 발생한 이유는 사이킷런의 predict_proba() 메소드가 오직 log 손실 함수와 modified Huber 손실 함수만 지원하기 때문이다. predict_prob..

Python/scikit-learn 2020.04.04

OS X에서 pip을 이용해서 XGBoos가 설치가 안될 때

XGBoost는 머신러닝이나 데이터 과학에서 매우 자주 사용되는 알고리즘이다. 이 알고리즘이 유명해진 이유들 중 하나로는 kaggle에서 상위 랭커들이 이 알고리즘을 사용해서 높은 성적을 얻어내었기 때문이다. XGBoost가 앙상블 알고리즘들 중에서도 특히 유명한 알고리즘들 중 하나이며, 부스팅 알고리즘들 중에서 빠르고 높은 성능을 보이기 때문에 분류 문제에서 자주 사용되곤 한다. 그런데, 맥북 사용자들 중에서 알 수 없는 에러로 인해서 XGBoost를 설치하지 못하는 사람들이 종종 보이곤 한다. "ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output." 과 같..

Python 2020.03.30