在catkin_ws中编译px4_test_pkg功能包时,需要同时编译mavlink,于是使用catkin_make_isolated命令。但是编译mavlink时遇到报错no module named future。原本这是个很简单的问题,但是踩了很多坑,在此记录一下。
首先是按网上所说pip install future,但是一直没能下载下来,于是换清华源,下载完再次编译。
但是还是出现了no module named future,此时发现可能安装到python3.6去了。按网上的办法,指定下载目录
sudo pip install --target=/usr/local/lib/python2.7/dist-packages future -i https://pypi.tuna.tsinghua.edu.cn/simple
然后到python2.7的dist-packages中查看,future包确实已经存在。
再次执行编译,报错:no module named reprlib,在引用future包时发现没有reprlib这个包。
网上极少关于reprlib这个包的介绍,我只能硬着头皮用pip下载reprlib,但是显示没有这个包。
后来怀疑是pip版本问题,一看是python3.6的pip。将其卸载,换成python2.7的pip。
再次下载future,发现requirement already satisfied。。(如图)也就是说,虽然换成2.7版本的pip,依然把future库下载到python3.6的dist-packages中去了。
最后没办法,指定了python2.7版本执行命令:
python -m pip install future -i https://pypi.tuna.tsinghua.edu.cn/simple
下载的包终于被python2.7版本识别。
总结:首先确认自己的pip版本和默认python版本是否一致;然后下载命令最好使用python -m pip install。