终于在我的树莓派上安装rasa-1.4.0版本成功(见《树莓派智能语音助手之聊天机器人-RASA》)。不过,在初始化rasa的时候还是遇到了很多报错,在此总结,供朋友们参考。
1. ModuleNotFoundError: No module named ‘tensorflow.contrib‘
根源:这个报错通常出现在tensorflow-2.0版本,是因为在这个版本里已经去掉了contrib这个模块,改成了tf_slim包。
分析:我本来装的就是tensorflow-1.14.0,却还出现这个报错,怀疑tensorflow安装除了问题。
解决:先用python -> import tensorflow来查版本,结果报错。于是直接pip uninstall tensorflow,把它卸载了。然后从再重新安装从网上下载的针对raspbian的1.4.0版本。
Raspbian rasa下载:https://github.com/lhelontra/tensorflow-on-arm/releases
安装后要把numpy对应upgrade为1.16.0。
2. 报错 cannot import 'cloud' from 'tensorflow.contrib'
解决:这个问题好像也是树莓派上安装rasa会遇到。解决方案很简单,就是打开出现报错的tensorflow的__init__.py文件,将对应行直接注释掉就行了。
sudo nano /usr/local/python3/lib/python3.7/site-packages/tensorflow/contrib/__init__.py
3. 报错:no module named '_bz2'
分析:报错的主要原因在于python解释器找不到 _bz2 模块。
解决:sudo apt-get install libbz2-dev ,安装后进入/usr/lib/python3.7/lib-dynload/,用ls可以看到_bz2.cpython-37m-arm-linux-gnueabihf.so这个文件,把它复制到 /usr/local/lib/python3.7/ 就可以解决问题。
4. This version of TensorFlow Datasets requires TensorFlow version >= 2.1.0
分析:这个报错是因为我在问题1出现的时候先装了tensorflow2.1.0,后来卸载了,但tensorflow datasets没有跟着降级,依旧是4.x版本。
解决:将tensorflow datasets降级到1.3.2。如果大于这个版本rasa init时候会一直报“module 'tensorflow.compat.v2' has no attribute 'contrib'”。
5. libhdf5_serial.so.103: cannot open shared object file
分析:这个问题是由于h5py安装不完整造成的。
解决:卸载当前h5py,用apt-get install安装python3-h5py,然后再pip install重新安装h5py。
pip3 uninstall h5py
sudo apt-get install python3-h5py
python3 -m pip install h5py
这样直接装好的版本号是3.8.0,这个版本在后面跑rasa shell的时候还会有新的报错“'str' object has no attribute 'decode'”,所以,建议装2.9.0版本。
6. tensorflow_hub requires tensorflow version >= 1.15.0
解决:要么升级tensorflow到1.15.0版,要么就降级tensorflow_hub。我的树莓派没有tensorflow-1.15.0版的whl,那就只能降级hub了。
python3 -m pip install --upgrade tensorflow_hub==0.5.0
以上错误都是在rasa init过程报出来的。需要注意,上述任何报错,都会伴随着Module for policy 'MemoizationPolicy' could not be loaded. 的错误,不用去管它,只要其他报错都被修复了,rasa init能正常运行了,这个报错就会消失。
7. asyncio - Task exception was never retrieved
解决:这个报错是在运行rasa shell时发生的。根据rasa community forum给出的解决方案,直接把google-auth,prompt-toolkit,querstionary,SQLlchemy,urlib3这几个包降级。
pip install google-auth==1.10.1 prompt-toolkit==2.0.10 questionary==1.4.0 SQLAlchemy==1.3.12 urllib3==1.25.7