如何在内部导入时转储函数

问题描述 投票:1回答:1

我正在尝试将函数转储到文件中,以便可以在其他地方使用此文件/函数。我选择dill而不是pickle,因为我需要依赖项。但是,如果函数内部具有导入,则dill不起作用。例如:

def func():
    import numpy

import dill
dill.settings['recurse'] = True 
with open("test.pickle","wb") as f:
    dill.dump(func,f)

重新启动并重新加载该函数时,出现此错误,

import dill 
func = dill.load(open("test.pickle"))
func()
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input> in <module>()
      1 import dill
      2 func = dill.load(open("test.pickle"))
----> 3 func()

<ipython-input> in func()

ImportError: __import__ not found

此示例在我使用pickle转储时有效,但是pickle似乎没有递归保存依赖项,因此我无法保存def fun1(): return fun2()之类的函数。有没有一种方法可以同时导入和依赖转储函数?我觉得pickledill只做一半。

python pickle dump dill
1个回答
0
投票

[当我使用dill转储函数然后使用pickle加载时,这似乎起作用。

© www.soinside.com 2019 - 2024. All rights reserved.