카테고리 없음

numpy.dtype size changed 오류 (TA-Lib, Numpy 호환성 문제)

greater flamingo 2024. 10. 20. 17:40
728x90
반응형

TA-Lib은 파이썬 라이브러리입니다. Technical Analysis Library의 약자로, 금융 데이터의 기술적 분석을 위해 다양한 지표, 예를 들면, 이동 평균, MACD, RSI 등을 제공하는 오픈 소스 C 기반 라이브러리입니다. Python에서는 TA-Lib을 사용하기 위한 Python 바인딩 패키지가 존재하며, ta-lib이라는 이름으로 설치됩니다. 

참고로,

- library: 특정 작업을 수행하는 도구들의 모음

- 패키지: python에서 라이브러리 또는 모듈을 설치하고 관리하기 위한 형식

- 모듈: 라이브러리의 일부로, 하나의 파일 내에 함수나 클래스 등이 모여있는 코드 단위

입니다. 

PS C:\dev>  c:; cd 'c:\dev'; & 'c:\dev\myenv\Scripts\python.exe' 'c:\Users\Admin\.vscode-insiders\extensions\ms-python.debugpy-2024.13.2024101501-win32-x64\bundled\libs\debugpy\adapter/../..\debugpy\launcher' '50881' '--' 'C:\dev\dataloader.py' 
Warning - Certain functionality 
             requires requests_html, which is not installed.
             Install using:
             pip install requests_html
             After installation, you may have to restart your Python session.

**Exception has occurred: ValueError**
* 
numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject
 File "C:\dev\dataloader.py", line 8, in  import talib as ta ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject

`numpy.dtype size changed, may indicate binary incompatibility` 에러는 TA-Lib과 같은 라이브러리와 설치된 numpy의 버전간에 호환성이 맞지 않는다는 의미입니다. 

해결책을 찾아보려고 합니다. 

1. NumPy 재설치 혹은 업데이트 
pip uninstall numpy
pip install numpy --upgrade

Numpy의 최신 버전이 설치돼있는지 확인하고, 필요하다면 업데이트 합니다. 아래 명령어를 실행해 Numpy를 재설치하거나 업데이트할 수 있습니다. 

2. TA-Lib 재설치 혹은 업데이트 

마찬가지로, TA-Lib도 재설치하거나 최신버전으로 업데이트합니다. 

pip uninstall TA-Lib
pip install TA-Lib --upgrade
3. Python과 패키지 호환성 확인 

python 버전과 `NumPy`, `TA-Lib`의 호환성을 확인해보세요. 가상 환경을 이용하면 패키지 간 의존성 문제를 더 쉽게 관리할 수 있습니다. 가상 환경을 새로 만들려면 아래 명령어를 사용할 수 있습니다. 

python -m venv myenv
source myenv/bin/activate # windows에서는: myenv\Scripts\activate
pip install numpy TA-Lib
4. requests_html 설치 (선택사항)

또한, 경고 메시지에서 나온 것처럼 특정 기능을 사용하기 위해 requests_html 패키지가 필요할 수 있습니다. 

pip install requests_html

이게 작동하지 않는다면 python 버전과 매칭되는 wheel 파일을 통해 TA-Lib을 설치할 수 있ㅆ브니다.

pip install TA_Lib‑0.4.XX‑cpXX‑cpXX‑win_amd64.whl

위에서 XX 부분을 python버전숫자로 바꿔야 합니다. 

시스템의 64bit 32bit 여부 및 파이썬 버전 확인 

내 시스템과 파이썬 버전을 확인하는 python 코드를 아래와 같이 작성할 수 있습니다.

import sys
import platform

print(f"Python version: {sys.version}")
print(f"Architecture: {platform.architecture()[0]}")

혹은 터미널에서 간단하게 아래의 명령어만 입력하면 파이썬 버전을 확인할 수도 있습니다. 

python --version

아래 결과와 같이 확인을 할 수도 있을 겁니다.

 

  • cp311 (for Python 3.11)
  • win_amd64 (for 64-bit Windows)

위의 버전으로 확인될 경우 아래와 같은 파일명으로 whl 파일을 찾으면 됩니다. 

TA_Lib‑0.4.28‑cp311‑cp311‑win_amd64.whl

 

다운로드 후에는 아래와 같이 명령어로 설치해주면 됩니다. 

pip uninstall TA-Lib
pip install TA_Lib-0.4.28-cp311-cp311-win_amd64.whl

설치가 완료됐다면 아래와 같이 파이썬 파일을 만들어 테스트해볼 수 있습니다. 

import talib
print(talib.__version__)  # Should print 0.4.28

 

반응형