본문 바로가기

프로그래밍/Python

우분투에 kss 설치시 fatal error: Python.h: No such file or directory 에러가 발생할 때.

728x90

ubuntu 18.04 에 kss 를 설치해 봤다.

kss 는 한국어 문장분리용 파이썬 라이브러리이다. (2020년 3월 현재) 윈도우에서는 설치가 안 되고, python2 에서도 설치가 안 된다.

ubuntu 에서 python3 로 우선 가상환경을 하나 만들어서, 그 가상환경으로 진입하여 설치를 진행했다.

`pip install kss` 명령을 실행하였으나, 다음과 같은 에러가 발생했다. 

  Running setup.py clean for kss
Failed to build kss
Installing collected packages: kss
    Running setup.py install for kss ... error
    ERROR: Command errored out with exit status 1:
     command: /home/usrme/venv_kss_test/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-5gjnkd8g/kss/setup.py'"'"'; __file__='"'"'/tmp/pip-install-5gjnkd8g/kss/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-2ho1aj3q/install-record.txt --single-version-externally-managed --compile --install-headers /home/usrme/venv_kss_test/include/site/python3.6/kss
         cwd: /tmp/pip-install-5gjnkd8g/kss/
    Complete output (12 lines):
    running install
    running build
    running build_ext
    building 'kss' extension
    creating build
    creating build/temp.linux-x86_64-3.6
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.6m -I/home/usrme/venv_kss_test/include/python3.6m -c kss.cpp -o build/temp.linux-x86_64-3.6/kss.o -std=c++11
    kss.cpp:27:10: fatal error: Python.h: No such file or directory
     #include "Python.h"
              ^~~~~~~~~~
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/usrme/venv_kss_test/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-5gjnkd8g/kss/setup.py'"'"'; __file__='"'"'/tmp/pip-install-5gjnkd8g/kss/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-2ho1aj3q/install-record.txt --single-version-externally-managed --compile --install-headers /home/usrme/venv_kss_test/include/site/python3.6/kss Check the logs for full command output.

주된 에러의 내용은 설치과정에서 gcc 빌드과정을 거치는데, `python.h` 라는 헤더파일이 없어서 발생하는 것이다. python.h 는 어디에 있는걸까?

검색해 보니, 우분투에서는 python3-dev 패키지를 설치하라고 했다. (다른 배포판에서는 설치패키지명이 다르니 주의)

sudo apt install python3-dev

위 명령으로 python3-dev 를 설치한 이후에, 다시 `pip install kss` 설치명령을 실행하여, 설치하였더나, 이전의 에러가 발생하지 않고 설치가 완료되었다.