python - 导入错误 : No module named copy_reg pickle

标签 python pickle

我正在尝试解开存储为 MySQL 数据库中 blob 的对象。我已经手动生成了 pickle 对象并将其存储在数据库中,但是当我尝试取消 pickle 对象时,我得到了以下相当神秘的异常:

ImportError: 没有名为 copy_reg 的模块

关于为什么会发生这种情况的任何想法?

繁殖方法

注意:必须在 Windows PC 上执行步骤 1,在 Linux PC 上执行步骤 3 和 4。

1) 在 Windows PC 上:

file = open("test.txt", "w")
thing = {'a': 1, 'b':2}
cPickle.dump(thing, file)

2) 手动将 text.txt 的内容插入到 Linux 上运行的 MySQL 数据库的 blob 字段中

3) 在 Linux 机器上运行的 Python 中,从 MySQL 获取列的内容

4) 假设您将 blob 列的内容放入一个名为 data 的变量中,试试这个:

cPickle.loads(rawString)

最佳答案

看来这可能是我导出 pickle 对象的方法造成的。

This bug report看来表明我的问题可以通过导出到以二进制模式写入的文件来解决。我现在就试一试,看看这是否能解决我的问题。

更新:这行得通。解决方案是确保将 pickle 对象导出到以二进制模式打开的文件中,即使您使用的是默认协议(protocol) 0(通常称为“文本”)

基于相关原始示例的正确代码:

file = open("test.txt", 'wb')
thing = {'a': 1, 'b':2}
cPickle.dump(thing, file)

关于python - 导入错误 : No module named copy_reg pickle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/556269/

相关文章:

python - pickle后属性错误

python - Pickle 输掉了我的一个论点

python - 根据一列中的不同值获取行

python - 如何在 macOS 上更快地截取屏幕截图?

python - 如何在 Linux 上重命名进程?

python - 无法取消 pickle 对象

ruby-on-rails - 将咸菜与 cucumber 和factory_girl一起使用以创建关联的模型,并将参数传递给嵌套模型

python - 用于插入 Google Fusion Tables 的 Python 中经过身份验证的 POST

python - 在 selenium webdriver(浏览器)中呈现 HTTP 响应(HTML 内容)

Python:防止缓存减慢我的速度