• Python 에서 pickle 파일 open 시도할 때, 'module' object has no attribute '    ' error 가 발생하는 경우.
  • Python pickle AttributeError 'module' object has no attribute 'foobar'




  • 왜 이런 일이 발생할까나~?
    • 기본적으로 pickle 에 저장시 __main__ 에서 바로 pickle 을 이용하여 데이터를 저장할 경우
    • pickle 파일은 __main__ 이라는 name(이름) 과 파일을 저장할 당시의 데이터 구조 정보(ex. class 의 이름이라던가...) 를 가지게 되는데
    • 이 pickle 파일을 저장하는 소스 코드를 가지고 있는 package 를 import 하여 다른 python code 에서 열려고 할 경우
    • 다른 python code 에서는 pickle 파일을 열 때
      • __name__ 이 아닌 package path 를 가지고 열려고 시도하게 된다.
      • 이 때, 에러가 발생하게 되지요.
      • 왜냐하면, 기존의 pickle 파일은 __main__ 이라는 정보를 가지고 있는데, 새로운 package path 를 가지고 열려고 하니,
        • 이 정보를 기존의 pickle 파일이 가지고 있지 않으므로
        • 'module' object has no attribute ' ' 와 같은 Error 가 발생하게 된다.
    • 즉,
      • data 정보를 가지고 있는 pickle 파일을 저장하는 시점의 정보와
      • data 정보를 가지고 있는 pickle 파일을 open 하려 하는 시점의 정보가 다르면
      • pickle 파일을 open 할 수 없다.


+ Recent posts