본문 바로가기
알고리즘 트레이딩/Trouble Shooting

ModuleNotFoundError: No module named 'win32com' 그리고 모듈에 대한 간단한 이해

by 빵빵댇 2022. 2. 4.

오류 전문

PS C:\Python> python .\getStockInfo.py
Traceback (most recent call last):
  File "C:\Python\getStockInfo.py", line 1, in <module>
    import win32com.client
ModuleNotFoundError: No module named 'win32com'        
PS C:\Python> python -m pip install pywin32
Collecting pywin32
  Downloading pywin32-303-cp310-cp310-win_amd64.whl (9.2 MB)
     |████████████████████████████████| 9.2 MB 6.4 MB/s
Installing collected packages: pywin32
Successfully installed pywin32-303
WARNING: You are using pip version 21.2.4; however, version 22.0.3 is available.
You should consider upgrading via the 'C:\Users\kwon\AppData\Local\Programs\Python\Python310\python.exe -m pip install --upgrade pip' command.
PS C:\Python>

 

ModuleNotFoundError는 말그대로 코드 내에서 import하여 사용하고자 하는 모듈을 찾지 못했을 때 발생하는 오류다. 모듈이라는 것은 단순히 다른 소스코드 파일 또는 다른 프로그램 이라고 생각하면 가장 이해가 쉬울 것이다.

 

우리가 사용하는 대부분의 프로그래밍 언어는 컴퓨터가 바로 해석할 수 있는 것이 아니다. 단순한 print문 하나를 사용하더라도 print문이 어떤 역할을 하는지 컴퓨터에게 직접적으로 전달해야할 명령어가 무엇인지 해석하고 번역해주는 단계를 거치게 된다.

 

그렇다면 어디선가는 이러한 역할을 해주고 있다는건데... java의 경우 JRE/JDK, python의 경우 python 공식 홈페이지에서 프로그램을 받아 설치하는 등의 환경을 설정해주는데 이때 설치하게 되는 최소한의 프로그램 파일들은 자동 또는 수동으로 사용자가 개발하는 프로그램에 import 되어 사용된다. 이러한 프로그램들을 모듈이라고 할 수 있다.

 

모듈은 이렇게 기본제공되는 프로그램 말고도 동일한 용도로 사용자가 직접 만들어서 사용할 수도 있다. 가령 일반적인 print가 아닌 앞뒤에 특정 텍스트를 항상 출력하는 myprint 함수를 만들어 별도 파일로 저장해놓고, 프로그램 작성 시 해당 파일을 import하여 myprint 함수를 사용하는 것이다. 이 경우 myprint 함수를 작성해 놓은 파일을 모듈이라고 할 수 있는 것이다.

 

아무튼 이번 ModuleNotFoundError는 win32com이라는 모듈을 찾이 못해 발생한 오류가 이 오류를 유발한 직접적인 코드는 아래와 같다.

 

import win32com.client

 

오류 전문 안에서 볼 수 있듯 'python -m pip install pywin32' 명령어를 사용하여 해당 모듈을 설치하여 문제를 해결했다.

 

 

 

 

댓글