类型错误:不能腌制 PyCapsule 对象
我使用 dill
将 ML 模型保存到文件中.
I use dill
to save ML model to file.
当我使用 python -m unittest
运行我的测试时,它可以工作.但是,如果我尝试使用 python setup.py test
运行测试,则会出现错误 TypeError: can't pickle PyCapsule objects
in raw 我尝试保存模型的地方.
When I run my tests with python -m unittest
it works. But if I try run tests with python setup.py test
it getting error TypeError: can't pickle PyCapsule objects
in raw where I try to save model.
我在 setup.py 中的测试设置:
test_suite='tests',tests_require=['pytest']
错误:
File "/Users/anna/anaconda3/lib/python3.6/site-packages/dill/_dill.py", line 1055, in save_builtin_method
pickler.save_reduce(_get_attr, (module, obj.__name__), obj=obj)
File "/Users/anna/anaconda3/lib/python3.6/pickle.py", line 610, in save_reduce
save(args)
File "/Users/anna/anaconda3/lib/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/Users/anna/anaconda3/lib/python3.6/pickle.py", line 736, in save_tuple
save(element)
File "/Users/anna/anaconda3/lib/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/Users/anna/anaconda3/lib/python3.6/site-packages/dill/_dill.py", line 1260, in save_module
state=_main_dict)
File "/Users/anna/anaconda3/lib/python3.6/pickle.py", line 634, in save_reduce
save(state)
File "/Users/anna/anaconda3/lib/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/Users/anna/anaconda3/lib/python3.6/site-packages/dill/_dill.py", line 893, in save_module_dict
StockPickler.save_dict(pickler, obj)
File "/Users/anna/anaconda3/lib/python3.6/pickle.py", line 821, in save_dict
self._batch_setitems(obj.items())
File "/Users/anna/anaconda3/lib/python3.6/pickle.py", line 847, in _batch_setitems
save(v)
File "/Users/anna/anaconda3/lib/python3.6/pickle.py", line 496, in save
rv = reduce(self.proto)
TypeError: can't pickle PyCapsule objects
你能帮我知道为什么它不起作用吗?
Could you help me to know why it doesn't work?
我是 dill
的作者.这是 dill
的一个已知未决问题.请参阅:https://github.com/uqfoundation/dill/issues/106.本质上,PyCapsule
对象的序列化函数尚未在 dill
中注册.
I'm the dill
author. This is a known open issue for dill
. See: https://github.com/uqfoundation/dill/issues/106. Essentially, a serialization function for PyCapsule
objects has not yet been registered in dill
.