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

使用Python NLP模块训练数据集时遇dill._dill无log属性错误

问题描述

在使用Python的nlp模块训练数据集时遇到以下错误:

File "/usr/local/lib/python3.9/site-packages/nlp/utils/py_utils.py", line 297, in save_code
    dill._dill.log.info("Co: %s" % obj)

AttributeError: module 'dill._dill' has no attribute 'log'

我注意到有类似的找不到'extend'、'stack'属性的问题,想确认这是否属于同类情况。已经尝试执行pip install dill --upgrade但没有效果,在Python命令行执行dir(dill)也没找到'log'属性。

当前环境信息:

  • 系统:Mac
  • Python版本:3.9.15
  • 相关包版本:dill 0.3.6、nlp 0.4.0、pyarrow 10.0.1

完整堆栈跟踪:

File "/usr/local/lib/python3.9/site-packages/nlp/arrow_dataset.py", line 902, in map
    cache_file_name = self._get_cache_file_path(function, cache_kwargs)
  File "/usr/local/lib/python3.9/site-packages/nlp/arrow_dataset.py", line 756, in _get_cache_file_path
    function_bytes = dumps(function)
  File "/usr/local/lib/python3.9/site-packages/nlp/utils/py_utils.py", line 278, in dumps
    dump(obj, file)
  File "/usr/local/lib/python3.9/site-packages/nlp/utils/py_utils.py", line 271, in dump
    Pickler(file).dump(obj)
  File "/usr/local/lib/python3.9/site-packages/dill/_dill.py", line 394, in dump
    StockPickler.dump(self, obj)
  File "/usr/local/Cellar/python@3.9/3.9.15/Frameworks/Python.framework/Versions/3.9/lib/python3.9/pickle.py", line 487, in dump
    self.save(obj)
  File "/usr/local/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "/usr/local/Cellar/python@3.9/3.9.15/Frameworks/Python.framework/Versions/3.9/lib/python3.9/pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
  File "/usr/local/lib/python3.9/site-packages/dill/_dill.py", line 1824, in save_function
    _save_with_postproc(pickler, (_create_function, (
  File "/usr/local/lib/python3.9/site-packages/dill/_dill.py", line 1070, in _save_with_postproc
    pickler.save_reduce(*reduction, obj=obj)
  File "/usr/local/Cellar/python@3.9/3.9.15/Frameworks/Python.framework/Versions/3.9/lib/python3.9/pickle.py", line 692, in save_reduce
    save(args)
  File "/usr/local/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "/usr/local/Cellar/python@3.9/3.9.15/Frameworks/Python.framework/Versions/3.9/lib/python3.9/pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
  File "/usr/local/Cellar/python@3.9/3.9.15/Frameworks/Python.framework/Versions/3.9/lib/python3.9/pickle.py", line 901, in save_tuple
    save(element)
  File "/usr/local/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "/usr/local/Cellar/python@3.9/3.9.15/Frameworks/Python.framework/Versions/3.9/lib/python3.9/pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
  File "/usr/local/lib/python3.9/site-packages/nlp/utils/py_utils.py", line 297, in save_code
    dill._dill.log.info("Co: %s" % obj) 
AttributeError: module 'dill._dill' has no attribute 'log'
解决方案

这确实属于版本兼容性问题——你使用的nlp模块(0.4.0版本)依赖的dill版本过旧,而dill在0.3.6版本中已经移除了dill._dill.log这个内部属性,导致调用失败。

解决步骤:

  1. 降级dill到与nlp 0.4.0兼容的版本,比如0.3.1.1:
    pip install dill==0.3.1.1
    
  2. 如果降级后仍有问题,建议迁移到datasets库(原nlp模块已更名并停止维护,最新功能都在datasets中):
    pip uninstall nlp
    pip install datasets
    
  3. 验证修复:执行dir(dill._dill)查看是否存在log属性,或重新运行训练代码确认错误消失。

补充:那些找不到'extend'、'stack'属性的问题,本质也是不同版本间的API变更导致的兼容性问题,和你的情况完全一致,都是依赖库内部API被移除/修改,而调用方未同步更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:05:26