为啥我不能在不同的模块中加载泡菜?
Posted
技术标签:
【中文标题】为啥我不能在不同的模块中加载泡菜?【英文标题】:why I cannot load the pickle in a different module?为什么我不能在不同的模块中加载泡菜? 【发布时间】:2017-09-23 12:15:21 【问题描述】:我在模块 1 中创建了一个名为 tabla_precios
的泡菜,我期待在模块 2 中打开它。
泡菜在模块 1 中的一个函数中打开。
目前我正在导入 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
我期待在不同的模块中导入泡菜。
【问题讨论】:
print(tabla_precios)
:您没有定义tabla_precios
变量,但您将其传递给print
。
【参考方案1】:
pickle 只存储对类和函数的引用,而不是函数本身。如果你腌制一个类,当你取消腌制它时,类定义需要在命名空间中。 python中的模块只导入一次,然后保存在sys.modules
中。重新导入此模块不会导致代码执行多次。要对其进行测试,请尝试在模块中添加 print
语句并查看它是否被多次调用。
【讨论】:
以上是关于为啥我不能在不同的模块中加载泡菜?的主要内容,如果未能解决你的问题,请参考以下文章