首页 > 解决方案 > 当对象被序列化时,有没有办法在 python 中删除不需要的导入

问题描述

想象一下我有a.py

import tensorflow as tf
class A:
    name = "Class A"

dump.py

import pickle
from a import A

a = A()

with open("a.pickled", "wb") as f:
    f.write(pickle.dump(a))

load.py

import pickle
with open("a.pickled", "rb") as f:
    a = pickle.load(f.read())

当 pythonpickles对象a时,它实际上也拉入了tensorflow. 结果,当对象在 中反序列化时load.py,它会导入tensorflow并带来一堆与tensorflow. 我想知道我们是否可以在不修改的情况下删除不需要的tensorflow 导入dump.pya.py

我在 中尝试过这样的事情dumpy.py,但这对我不起作用:

import pickle
from a import A
# Delete tensorflow related import from cache 
import sys
names = [name for name in sys.modules.keys() if "tensorflow" in name]
for name in names:
    del sys.modules[name]

a = A()

with open("a.pickled", "wb") as f:
    f.write(pickle.dump(a))

标签: pythonserializationpython-importpickle

解决方案


推荐阅读