2017-04-26 1 views
1

이라는 모듈 1에 피클을 만들었으며 module2에서 열어보기를 기대합니다. pickle은 module1의 함수에서 열립니다.다른 모듈에서 피클을로드 할 수없는 이유는 무엇입니까?

현재 module2에서 함수를 가져오고 있지만 다른 모듈에서 모듈을 실행할 때마다 피클을 만들 것이라고 생각하기 때문에 가장 효율적인 방법은 아닌 것 같습니다.

따라서 필자는 직접 다른 모듈에서 피클을 가져 오는 것으로 생각했지만 어떻게해야할지 모르겠습니다.

이 내가 시도 것입니다 :

import pandas as pd 
import pickle 

main_df=pd.DataFrame() 

pickle_out=open ('tabla_precios.pickle','wb') 
pickle.dump(main_df,pickle_out) 
pickle_out.close() 

print(tabla_precios) 

그것은 오류 온다 : 나는 다른 모듈에 피클을 가져올 기대

name 'tabla_precios' is not defined 

.

+0

'print (tabla_precios)':'tabla_precios' 변수가 정의되어 있지 않지만'print'에 전달했습니다. – CristiFati

답변

0

피클은 함수 자체가 아닌 클래스와 함수에 대한 참조 만 저장합니다. 클래스를 pickle하면, 클래스를 초기화 할 때 클래스 정의가 네임 스페이스에 있어야합니다. 파이썬 모듈은 한 번만 가져온 다음 sys.modules에 저장됩니다. 이 모듈을 다시 가져 오더라도 코드가 두 번 이상 실행되지는 않습니다. 테스트하려면 모듈에 print 문을 추가하고 두 번 이상 호출되는지 확인하십시오.

관련 문제