为知笔记外链:https://e6757600.wiz03.com/wapp/pages/view/share/s/3Ctno00M217F2eFikT2eDvz71j05Bg1kCx7G2UU_vR2Lw4cA
(已解决,过程大多为弯路,方法见文末)问题描述:上一次安装的pyyaml里面有一句:from error import * ,执行后发现没有error库,问题报错见下图:
背景:下载完moveit需要的包,catkin_make之后,执行roslaunch panda_moveit_config demo.launch rviz_tutorial:=true后报错。
思路一:
根据应对ImportError:No module name xxx的经验,这里应该果断执行pip install error,结果如下:
那么考虑到安装包名不一定与导入名称一致的问题,下面改成执行:pip install pyerror,结果如下:
安装是安装成功了,但是关键是执行还是报一样的错误,说明还是没有这个包,接下来我觉得是默认安装位置和我上次设置的python路径位置不一致的关系,我进行了指定位置的安装,如下(额sudo是失败一次后加上的):
好的,还是失败,为了彻底查清是不是安装路径与库搜索路径不一致的锅,我分别进入了python2环境以及python环境(默认是py3)进行import error尝试,结果果然是ImportError:No module name error:
但是我发现了import pyerror是没有报错的,说明刚刚安装的pyerror导入库用的名字就是pyerror,好的,接下来就是查明error到底是啥了(说法有点奇怪)。
思路二:
进入出错文件目录下,直接执行该文件:
第一条执行并未报错,说明文件在此目录是可以正常运行的,列出所有文件:
原来error是这个库自带的py文件,害,一顿好找。
但是按照python导入自定义模块,是优先会查找文件目录的,不过python2.7直接执行__init__.py文件没报错,说明还是能够查找出文件位置,只是在roslaunch的过程中,并没有搜索到问题,想了好半天,我没想出啥好方法,只能采取最粗暴的办法,将此文件目录加入~/.bashrc的PYTHONPATH中:
顺利通过这个错误,但是又来到了另一个错误而已。
总结:
error不是一个注册的python库,而是pyyaml自带的一个文件,暂时先用修改PYTHONPATH的方法,但是这个方法必会留下弊端,弊端就留给弊端出来的时候在解决吧,因为现在有另一个问题横在我眼前了。