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

Python Marshal代码PC端报错ValueError,Pydroid3可正常运行求解决

解决marshal跨Python环境兼容问题:Pydroid 3可运行但PC端Python 3.10报错

问题描述

代码在Pydroid 3环境正常运行,但PC端Python 3.10执行时抛出错误:

ValueError: bad marshal data (unknown type code)

所有同类基于marshal的代码都存在该问题,需要实现PC端运行或解码这类代码的方案。

示例代码:

import marshal
exec(marshal.loads(b'\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00@\x00\x00\x00s|\x00\x00\x00d\x00d\x01l\x00Z\x00d\x02Z\x01e\x02e\x01\x83\x01\x01\x00e\x03d\x03\x83\x01Z\x04e\x05e\x04\x83\x01\xa0\x06\xa1\x00Z\x07e\x08e\x07d\x04d\x05\x83\x03Z\te\x00\xa0\ne\t\xa1\x01Z\xbe\x05d\x06d\x07\x83\x02Z\xce\xc\xa0\rd\x08\xa1\x01\x01\x00e\xc\xa0\rd\te\xee\xb\x83\x01\x17\x00d\n\x17\x00\xa1\x01\x01\x00e\xc\xa0\xf\xa1\x00\x01\x00e\x02d\xb\x83\x01\x01\x00d\x01S\x00)\xc\xe9\x00\x00\x00\x00Nz\xe9\n\n  ___ __ _  ___ __ _  ___ _ __ __ _  ___| | __\n / __/ _` |/ __/ _` |/ __| \'__/ _` |/ __| |/ /\n| (_| (_| | (_| (_| | (__| | | (_| | (__|   <\n \\___\\__,_|\\___\\__,_|\\___|_|  \\__,_|\\___|_|\\_|\n Youtube : CACACRACK\n Instagram: jeager000\n z\xfMasukan File : \\xda\\x00\\xda\\x04execz\\x08hasil.py\\xda\\x01wz\\xfimport marshal\nz\\x13exec(marshal.loads(z\\x02))z\"selesai, nama file kamu : hasil.py)\\x10\\xda\\x07marshal\\xda\\tcacacrack\\xda\\x05print\\xda\\x05input\\xda\\x03inp\\xda\\x04open\\xda\\x04read\\xda\\x04file\\xda\\x07compile\\xda\\x03com\\xda\\x05dumps\\xda\\x03dum\\xda\\x08file_out\\xda\\x05write\\xda\\x04repr\\xda\\x05close\\xa9\\x00r\\x15\\x00\\x00\\x00r\\x15\\x00\\x00\\x00r\\x02\\x00\\x00\\x00\\xda\\x08&lt;module&gt;\\x01\\x00\\x00\\x00s\\x16\\x00\\x00\\x00\\x08\\x02\\x04\\t\\x08\\x01\\x08\\x01\\x0c\\x01\\x0c\\x01\n\\x01\n\\x01\n\\x01\\x16\\x01\\x08\\x02'))

问题根源

marshal模块的序列化格式强绑定Python版本,不同大版本(甚至部分小版本)之间不保证兼容性。Pydroid 3使用的Python版本(通常是Android适配的旧版本,如3.8或更早)与PC端Python 3.10的marshal格式不匹配,导致3.10无法解析旧版本生成的marshal数据。

解决方案

1. 安装对应Python版本解析

  • 先在Pydroid 3中运行import sys; print(sys.version),确认其使用的Python版本。
  • 在PC端安装完全相同的Python版本,用该版本运行代码即可正常解析marshal数据。

2. 在Pydroid中转存为跨版本兼容格式

如果无法安装旧版本Python,可在Pydroid中先解码marshal数据,再用跨版本兼容的方式保存后传到PC端:

import marshal
import pickle

# 替换为你的marshal数据
marshal_data = b'\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00@\x00\x00\x00s|\x00\x00\x00d\x00d\x01l\x00Z\x00d\x02Z\x01e\x02e\x01\x83\x01\x01\x00e\x03d\x03\x83\x01Z\x04e\x05e\x04\x83\x01\xa0\x06\xa1\x00Z\x07e\x08e\x07d\x04d\x05\x83\x03Z\te\x00\xa0\ne\t\xa1\x01Z\xbe\x05d\x06d\x07\x83\x02Z\xce\xc\xa0\rd\x08\xa1\x01\x01\x00e\xc\xa0\rd\te\xee\xb\x83\x01\x17\x00d\n\x17\x00\xa1\x01\x01\x00e\xc\xa0\xf\xa1\x00\x01\x00e\x02d\xb\x83\x01\x01\x00d\x01S\x00)\xc\xe9\x00\x00\x00\x00Nz\xe9\n\n  ___ __ _  ___ __ _  ___ _ __ __ _  ___| | __\n / __/ _` |/ __/ _` |/ __| \'__/ _` |/ __| |/ /\n| (_| (_| | (_| (_| | (__| | | (_| | (__|   <\n \\___\\__,_|\\___\\__,_|\\___|_|  \\__,_|\\___|_|\\_|\n Youtube : CACACRACK\n Instagram: jeager000\n z\xfMasukan File : \\xda\\x00\\xda\\x04execz\\x08hasil.py\\xda\\x01wz\\xfimport marshal\nz\\x13exec(marshal.loads(z\\x02))z\"selesai, nama file kamu : hasil.py)\\x10\\xda\\x07marshal\\xda\\tcacacrack\\xda\\x05print\\xda\\x05input\\xda\\x03inp\\xda\\x04open\\xda\\x04read\\xda\\x04file\\xda\\x07compile\\xda\\x03com\\xda\\x05dumps\\xda\\x03dum\\xda\\x08file_out\\xda\\x05write\\xda\\x04repr\\xda\\x05close\\xa9\\x00r\\x15\\x00\\x00\\x00r\\x15\\x00\\x00\\x00r\\x02\\x00\\x00\\x00\\xda\\x08&lt;module&gt;\\x01\\x00\\x00\\x00s\\x16\\x00\\x00\\x00\\x08\\x02\\x04\\t\\x08\\x01\\x08\\x01\\x0c\\x01\\x0c\\x01\n\\x01\n\\x01\n\\x01\\x16\\x01\\x08\\x02'))

# 解码得到代码对象
code_obj = marshal.loads(marshal_data)

# 方式1:导出为源码字符串(需安装uncompyle6)
# pip install uncompyle6
import uncompyle6
with open('source.py', 'w', encoding='utf-8') as f:
    uncompyle6.decompile(code_obj, f)

# 方式2:用pickle序列化(兼容性优于marshal)
with open('code.pkl', 'wb') as f:
    pickle.dump(code_obj, f)
  • 导出的source.py可直接在PC端Python 3.10运行。
  • 若用pickle,PC端可运行import pickle; exec(pickle.load(open('code.pkl', 'rb')))执行代码。

3. 反编译获取源码

直接用反编译工具把marshal数据转成可读源码,彻底摆脱版本限制:

  1. 在Pydroid中安装uncompyle6:pip install uncompyle6
  2. 运行上述代码中的导出源码部分,生成source.py后传到PC端直接使用。

内容的提问来源于stack exchange,提问作者Batuhan Bahadır

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:10:54