为啥我不能在不同的模块中加载泡菜?

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 语句并查看它是否被多次调用。

【讨论】:

以上是关于为啥我不能在不同的模块中加载泡菜?的主要内容,如果未能解决你的问题,请参考以下文章

模块不会在应用程序中加载

无法在 deno 中加载某些模块

有没有一种简单的方法可以在节点模块中加载 json?

如何在 Angular Electron 中加载模块?

尝试在 prestashop 1.7 管理模块中加载 js 和 css 文件

如何修复 @testable 导入无法在 xcode 单元测试中加载模块