当前位置: 首页 > 工具软件 > TextGrocery > 使用案例 >

nlp 短文本分类 tgrocery & TextGrocery 安装出现错误总结 No module named 'converter'

沈开畅
2023-12-01

 

在安装tgrocery的时候会报错,而且会一直出现错误,看以前也没有具体写tgrocery安装报错如何处置的文章,写一下自己在安装tgrocery过程中遇到的问题。可能这篇文章有点长,因为遇到的问题很多。

两点说明

  • 据说这个包只能在linux下跑 本人也是在linux环境下跑的 在windows环境下没有实际测试过
  • 这个包是用python2 写的所以和python3有些兼容的问题 但是按照下面的步骤改都能把问题解决

1  首先 下载 tgrocery至最新版本

pip install tgrocery

2 运行代码,发现有‘’converter‘’库没有安装

File "/anaconda3/envs/c_ocr/lib/python3.6//init.py", line 1, in <module>

from converter import *

ModuleNotFoundError: No module named 'converter'  

 产生原因: 即在init.py的这个文件中引用了converter这个模块。这个converter模块并不是一个第三方库模块,而是site-packages/tgrocery路径下,模块安装包里面自己写的模块 调用自己同级文件夹模块 调用的错误 

解决办法:

vi /anaconda3/envs/c_ocr/lib/python3.6//init.py 

进入到这个init.py的文件中,

from .classifier import *
from .converter import *

  在模块前边加个点. 

3 继续执行代码 仍然出现错误 

File "/anaconda3/envs/c_ocr/lib/python3.6/site-packages/tgrocery/converter.py", line 2, in <modul e> import cPickle ModuleNotFoundError: No module named 'cPickle'

 没有发现cPickle这个模块 

 产生原因: 本人是在python3的环境下跑这个代码的,而cPickle这个模块在Python2当中有,而在python3当中这个模块被整合到了pickle5当中。

 解决办法:在python3环境下 

 pip install pickle5

然后进入到conver.py这个文档中

vi /anaconda3/envs/c_ocr/lib/python3.6/site-
packages/tgrocery/converter.py  

把import cPickle 改成在python3中的pickle 注意都是小写

import  pickle5

 然后把converter.py文件中的所有引用cPcikle的地方都换成 pickle5    !! 这点很重要要不然以后还会报错 大概要改5/6处吧

4  再次运行模型,还是出现错误,显示没有base模块   

File "/anaconda3/envs/c_ocr/lib/python3.6/site-packages/tgrocery/converter.py", line 6, in <module> from base import * ModuleNotFoundError: No module named 'base'

    产生原因:base模块和converter模块一样都是site-packages/tgrocery下的文件夹

   解决办法:同第2步 converter的解决办法  

   进入到converter.py这个文件中

 

vi /anaconda3/envs/c_ocr/lib/python3.6/site-packages/tgrocery/converter.py

  再把base模块前加个.

 import  .base

5    再次运行之后出现如下错误

File "/anaconda3/envs/c_ocr/lib/python3.6/site-packages/tgrocery/base.py", line 54 print self.draw_table(

^ SyntaxError: invalid syntax

 产生原因: tgrocery 这个模块是用python2写的 所以要改成python3能读懂的编译方式 (python2中print函数不加括号,python3中print函数是要加括号的)

 解决办法: 在print函数后面加上括号 

print( self.draw_table(
        zip(
            ['%.2f%%' % (s * 100) for s in self.accuracy_labels.values()],
            ['%.2f%%' % (s * 100) for s in self.recall_labels.values()]
        ),
        self.accuracy_labels.keys(),
        ('accuracy', 'recall')
    ) )

 

6 再次运行之后出现如下错误

File "/anaconda3/envs/c_ocr/lib/python3.6/site-packages/tgrocery/classifier.py", line 5, in <module>

from converter import GroceryTextConverter ModuleNotFoundError: No module named 'converter'

解决办法:

vi anaconda3/envs/c_ocr/lib/python3.6/site-packages/tgrocery/classifier.py

然后

from .converter import GroceryTextConverter
from .learner import *
from .base import *

 

有关tgrocery的更改就这么多了

 

 

 

 

 

 类似资料: