본문 바로가기
컴퓨터이야기/파이썬프로그래밍

Python 모듈이 잘 설치되어도 오류가 나는 경우

by Saltycrocodile 2025. 2. 16.

 

예를 들어, pip install git+https://github.com/ssut/py-hanspell.gi

 

명령어는 hanspell이라는 맞춤법을 교정해주는 함수가 있는 라이브러리인데 이 라이브러리를 설치해주는 명령어다

 

명령 프롬프트에 실행하니 정상적으로 설치가 완료되었다. 

pip install git+https://github.com/ssut/py-hanspell.git

 

 

 

이제 라이브러리가 잘 설치되었나 확인해보자 나의 경우 아래와 같은 코드를 hans.py라는 파일명으로 저장했다.

 

코드
from hanspell import spell_checker
import stdio

print("라이브러리 설치 완료!")

 

 

결과

 

 

 

 

그런데 이렇게 했을 때 나처럼 정상적으로 나타나지 않고 오류가 날 수도 있다. 이럴 때는 우선 해당 코드가 작성된 파이썬 파일이 있는 위치에 다른 파일들이 있고 그 파일들 안에 작성된 코드에 참조된 모듈들에 문제가 있을 수가 있다. 예를 들어 모듈이 업데이트가 되면서 그 안에 있던 함수가 사라지거나 변경되었고 기존 파일이 그런 함수들로 작성된 모듈 및 코드들이라면 오류가 발생할 수 있다. 따라서 그런 경우에 라이브러리가 분명히 잘 설치되었음에도 에러가 발생할 수도 있다. 

 

그런데 여기서 재미있는 점은 폴더 안에 여러 가지 파일이 있다한들 나는 분명히 방금 작성한 특정 파이썬 파일 하나만 실행시켰을텐데 왜 이런 오류가 나타날까? 그 이유는 아래와 같다. 예를 들어 나의 경우 폴더 안에 예전 모듈로 작성했던 string.py라는 폴더가 있었다. 바로 이 string.py 안에 들어있던 모듈이 오래전 모듈이라 없어진 함수를 사용해서 작성된 코드였던 것이다.

 

그렇다면 hans.py 파일만 실행하고 있는데 왜 string.py 파일이 문제가 되는 것일까?

 

그 이유는 Python에서 모듈을 임포트할 때, 현재 작업 디렉토리에 있는 파일이 Python 표준 라이브러리와 충돌할 수 있기 때문이다. 즉, string.py라는 파일이 현재 작업 디렉토리에 존재하기 때문에, Python은 그 파일을 기본 string 모듈로 간주하려 시도하게 된다. 따라서 string.py라는 파일이 stdio와 관련된 문제를 일으킬 수 있다. 예를 들어, stdio가 내부에서 string 모듈을 사용하려 할 때, C:\hello\string.py 파일이 대신 로드되어 의도치 않은 동작을 할 수 있다.

 

따라서 이런 경우 다른 폴더에 작성을 하거나 해당 폴더 안에 문제가 되는 파일을 삭제 또는 이동시킨 후 수행하면 된다.