树莓派3B运行rasa init和rasa shell遇到的tensorflow报错总结

终于在我的树莓派上安装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

树莓派3B运行rasa init和rasa shell遇到的tensorflow报错总结_第1张图片

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

你可能感兴趣的:(树莓派实验室,tensorflow,python,树莓派,rasa)