我在模块foo
中有一个带有函数my_project.my_functions
的项目。我希望以一种我可以从其他地方解开它而不需要导入my_project
的方式来挑选该函数。 foo
没有任何副作用,因此函数外没有依赖项。
我正在使用dill
来挑选foo
,但是dill将其保存为<function my_project.my_functions.foo>
,当我尝试取消它时,会抱怨未知的my_project
模块
任何解决方案?
答案 0 :(得分:1)
我通过从代码赋予和空globals
字典重新创建函数来解决它。
def f(n):
return n+1
import dill
import types
import module
f = types.FunctionType(module.f.__code__,{})
with open("my_func.pkl", 'wb') as fs:
dill.dump(f, fs)
import dill
with open("my_func.pkl", 'rb') as fs:
f = dill.load(fs)