导入TensorPack的logger模块出现NameError,寻求解决方案
解决tensorpack导入logger时的
NameError: name 'create_dummy_class' is not defined问题 嘿,我之前也碰到过类似的问题,这个报错本质是tensorpack内部的工具函数没被正确导入,或者环境兼容出了问题。咱们一步步来解决:
1. 优先调整tensorpack版本(最稳妥的方案)
你用的是Python2.7,这个版本早就停止维护了,新版tensorpack已经不再支持它,所以大概率是版本不匹配导致的内部导入bug。
- 给Python2.7安装适配的旧版tensorpack:
pip install tensorpack==0.9.8
这个版本是最后一批对Python2.7友好的版本,能避开很多这类内部函数缺失的问题。
- 如果能切换到Python3.x环境,直接装最新版tensorpack就行:
pip install --upgrade tensorpack
毕竟Python3才是现在的主流,后续也能避免更多兼容坑。
2. 补全pyarrow依赖
报错里提到了pyarrow,create_dummy_class本来是用来在pyarrow没装的时候生成一个占位类的,但现在这个函数没找到,也有可能是pyarrow缺失触发了这个分支,但函数没被正确导入。
给Python2.7装兼容的pyarrow版本(最后支持Python2.7的是0.17.1):
pip install pyarrow==0.17.1
3. 手动修复代码(临时救急)
如果上面的方法都不行,你可以临时改一下tensorpack的源码:
- 找到这个文件:
/home/wangtao/anaconda2/envs/tensorflow/lib/python2.7/site-packages/tensorpack/dataflow/parallel.py - 在文件最开头加上一行导入:
from tensorpack.utils.utils import create_dummy_class
这样代码就能找到这个函数了。不过这个方法是临时的,下次更新tensorpack会被覆盖,所以还是优先用前两种方法。
最后提一句:Python2.7真的该换了,现在很多库都放弃支持它了,迁移到Python3能省不少麻烦~
内容的提问来源于stack exchange,提问作者K.Wanter
相关产品推荐
相关产品推荐

