본문 바로가기

그 외 코드/오류 해결

[RPI/Python] ModuleNotFoundError 해결하기

728x90
반응형
SMALL

 

 

라즈베리파이3에서 Python을 사용하다가 'ModuleNotFoundError'가 나왔습니다.

ModuleNotFoundError: No module named 'module_name'

 

이에 생각해볼것이 3가지 입니다. (본인은 마지막에서 해결되었음.)

 

1. Dependecy가 설치되어 있지 않음

>>> from pypot.creatures import PoppyTorso
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    from pypot.creatures import PoppyTorso
ModuleNotFoundError: No module named 'pypot'

pypot 이름의 module이 없다고 하니 설치해주어야 합니다.

콘솔에서 다음과 같이 입력해줍니다.

pip3 install pypot

Python3이기 때문에 pip3을 사용하였습니다.

pip을 사용하면 Python3 에 moudle이 설치되지 않습니다.

 

2. User-Defined Module

Python에서 import할수 있는 두가지 방법이 있는데, 절대경로상대경로입니다.

sys.path 같은 built-in package를 import 하는것이 absolute import이고,

사용자에게 만들어진 module을 import 하는것이 relative import입니다. 

그래서 relative import는 'from'을 사용하여야 합니다.

 

  • Absolute Import
import sys

 

  • Relative Import
from pypot.creatures import PoppyTorso

 

3. 경로 추가 

Python이 module과 package를 찾아가는 경로를 다음과 같이 확인 할 수 있습니다.

>>> import sys
>>> sys.path
['/home/poppy/Desktop', '/home/poppy', '/usr/bin', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/home/poppy/.local/lib/python3.7/site-packages', '/usr/local/lib/python3.7/dist-packages', '/usr/lib/python3/dist-packages']

 

확인해 보니 package가 저장된 정확한 경로가 없어 직접 추가하였습니다.

>>> sys.path.append("/home/poppy/pyenv/lib/python3.7/site-packages")
>>> sys.path
['/home/poppy/Desktop', '/home/poppy', '/usr/bin', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/home/poppy/.local/lib/python3.7/site-packages', '/usr/local/lib/python3.7/dist-packages', '/usr/lib/python3/dist-packages', '/home/poppy/pyenv/lib/python3.7/site-packages']

 

오류가 뜨지 않고 성공!

>>> from pypot.creatures import PoppyTorso
>>> 
728x90
반응형
LIST