2017-04-26 4 views
1

私はというモジュール1でピクルスを作りました。私はmodule2でそれを開くのを楽しみにしています。 pickleはmodule1の関数で開きます。なぜ、別のモジュールでピクルをロードできないのですか?

現在、私は、モジュール2内の関数をインポートしていますが、私は、私は漬物を作っていますだと思うので、それが最も効率的な方法ではないと信じて、私は別のモジュールでモジュールを実行するたびに、私ではないでしょうか?

は、したがって、私は別のモジュールに直接ピクルスをインポートするに思ったが、それを行う方法についてイムはわかりません。

これは私が試したものです:

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

'プリント(tabla_precios)':あなたは 'tabla_precios'変数が定義されていませんが、print''に渡します。 – CristiFati

答えて

0

漬物はクラスや関数ではなく、機能そのものへの参照を格納します。クラスをpickleする場合、クラス定義をアンピクルするときにクラス定義を名前空間に入れる必要があります。 Pythonのモジュールは一度だけインポートされ、sys.modulesに保存されます。このモジュールを再インポートしても、コードが複数回実行されることはありません。これをテストするには、モジュールにprintステートメントを追加して、複数回呼び出されているかどうか確認してください。

関連する問題