You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何序列化Python模块,无对应源码文件也可正常调用?

用dill序列化Python模块实现无源码加载

电脑1:序列化模块

直接用dill把目标模块完整序列化到文件,代码如下:

import my_module
import dill

# 将模块写入序列化文件
with open("my_module_serialized.pkl", "wb") as f:
    # dill会完整序列化模块的函数、类、变量等内容
    dill.dump(my_module, f)

电脑2:加载并使用序列化模块

加载后必须把模块注册到sys.modules字典,这样Python就不会因为找不到源码文件触发ModuleNotFoundError,代码如下:

import dill
import sys

# 读取序列化文件加载模块
with open("my_module_serialized.pkl", "rb") as f:
    my_module = dill.load(f)

# 关键步骤:把加载的模块注册到系统模块列表
sys.modules["my_module"] = my_module

# 现在可以正常调用模块内的功能
my_module.my_func()

注意事项

  • 版本兼容:确保两台电脑的Python版本和dill版本一致,避免序列化/反序列化时出现兼容性错误。
  • 模块依赖:如果my_module依赖其他第三方模块或自定义模块,目标电脑必须已经安装/存在这些依赖,否则依然会报错。
  • 特殊内容处理:如果模块里包含无法序列化的对象(比如C扩展、动态生成的资源),dill可能无法完整序列化,需要提前处理这些特殊部分。

内容的提问来源于stack exchange,提问作者Deep Drop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 19:27:06