파이썬에서 다른 모듈 import가 안된다고 에러가 났다. 철자까지 몇번을 확인하고 다른 곳에서 import해봐도 잘되는데 뭐가 문제일까 30분을 디버깅했다. 같은 패지키내에 모듈을 로딩할 때는 __init__.py
에서의 순서가 중요하더라.
파이썬 강좌나 책은 공개된 것은 많은데, 이렇게 중요한 내용은 언급을 안함ㅠ 디버깅으로 체득함.
sample code
추상 클래스로 인터페이스를 만들고, 구현체를 따로 만들었다. 둘은 서로 다른 파일에 구현되었다.
# /simulator/data_provider.py
from abc import *
class DataProvider(metaclass=ABCMeta):
@abstractmethod
def initialize(self):
pass
같은 패키지의 DataProvider import를 못한다.
# /simulator/live_data_provider.py
from . import DataProvider
class LiveDataProvider(DataProvider):
def initialize(self):
return "test"
import error
아래와 같이 되어 있는 경우 import가 안된다.
# /simulator/__init__.py
from simulator.live_data_provider import LiveDataProvider
from simulator.data_provider import DataProvider
import success
순서를 바꿔주니 잘 되었다.
# /simulator/__init__.py
from simulator.data_provider import DataProvider
from simulator.live_data_provider import LiveDataProvider
'기술 이야기' 카테고리의 다른 글
SOLID - SRP 단일 책임의 법칙 (0) | 2021.04.07 |
---|---|
[SW 이야기] EAFP vs LBYL (0) | 2021.01.18 |
python coverage with unittest 적용하기 feat. travis (2) | 2021.01.11 |
mDNS, DNS-SD - Discovery 문제 IGMP를 확인하자 (0) | 2020.06.25 |
[.NET] A callback was made on a garbage collected delegate of type (0) | 2020.06.11 |
C# .NET IDisposable을 이용한 Dispose pattern과 SafeHandle (0) | 2020.05.26 |
오픈소스로 개발하면 좋은점 - 1 (0) | 2020.05.19 |
댓글