python - 当对象被序列化时,有没有办法在 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.py
a.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))
解决方案
推荐阅读
- windows - 如何用 return 命令替换巨大的 .txt 文件中的字符“F”?
- laravel-5 - 在 JS 中获取 vue-i18n 的标签
- regex - 仅使用 gawk 正则表达式删除 2 个模式之间的字符串
- node.js - 在 node.js 中使用串行端口异步/等待
- jhipster - JHipster 自定义组件 GET http://localhost:9000/api/account 401 (未授权)
- swift - 如何在通知中显示阿拉伯语文本?
- azure - Azure 通知中心,类似于简单的发件人
- php - 使用 PHPUnit 使用控制台输入测试 php 文件?
- symfony - FOSUserBundle 2.1.0 - 如何处理更新的控制器?保存以使用 Bundle 继承?
- python - 具有非捕获字符的 python re.sub() 的意外结果