1. kitti2bag的安装
使用pip install pandas默认安装的是最新版的pandas,因为pandas版本0.24.0以后的版本不再支持python2.7,因此指定pandas0.23.0及以前的版本即可。
sudo pip install pandas==0.23.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
sudo pip install pykitti -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
sudo pip install kitti2bag -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
安装之后发现事情远不止这么简单
2. 运行的问题
运行指令:
kitti2bag -t 2011_09_26 -r 0001 raw_synced
在说问题之前首先echo $PYTHONPATH
看一下目前的python路径,这很重要,很可能你之前陪环境的时候把python的路径改了。
问题一:
找不到pykitti
对于这个问题,可以开一个python然后Import pykitti,然后就又会诞生许多新问题:
(1)“ImportError: No module named xxx”
(2)“ImportError: xxx is the minimum required version”
这种时候一般就去用下方指令安装或者在安装包后方加上==版本号来指定版本之类的。
sudo pip install --target=/usr/local/lib/python2.7/site-packages catkin-tools -i http://pypi.douban.com/simple --trusted-host pypi.douban.com --default-timeout=100000
(Requirement already satisfied解决办法:pip install 工具包到指定目录)
(网络源的问题:-i http://pypi.douban.com/simple --trusted-host pypi.douban.com)
(超时的问题:--default-timeout=100000)
(其实最好不要用sudo安装)
如果是ros相关的东西找不到,用下方指令安装。
sudo apt-get install ros-kinetic-xx
(说下题外话,python的site-packages和dist-packages的区别)
1、系统自带python
系统自带软件管理器安装, 模块将被安装到 dist-packages
/usr/lib/python2.7/dist-packages/
从 easy_install 和 pip (注: 是python的软件管理其,python有许许多多的软件) 使用,他们也使用 dist-packages,但是路径是:
/usr/local/lib/python2.7/dist-packages/
2、自己安装或者升级过后的python
python安装第三方库的路径是:
/usr/lib/python2.7/site-packages/
从 easy_install 和 pip 安装的第三方库安装路径是:
/usr/local/lib/python2.7/site-packages/
3、非root用户,从 easy_install 和 pip安装第三方库的安装路径是
~/.local/lib/python2.7/site-packages
有时候需要检查第三方库的路径是否在(笔者在这里碰见过一个坑,正常路径下又某个库,但是import找不到,只能指向这里的对应的库)
~/.local/lib/python2.7/site-packages/external/protobuf/python
除了上面两种问题还有可能遇到“AttributeError: 'module' object has no attribute 'utils'”
这个问题就很难说了,再回去重新运行kitti2bag指令,看提示啥错误。
实际上,用pip安装时还会出现多种多样乱七八糟的错误,
比如pip指令出现SyntaxError: invalid syntax
一、第一种报错如下>>> pip install numpy
File "<stdin>", line 1
pip install numpy
^
SyntaxError: invalid syntax
原因:在Python运行环境里执行pip指令是错误的解决:在CMD中或者Anaconda Prompt中运行pip即可
二、第二种报错如下(即使在CMD中也是invalid syntax错误)
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
load_entry_point('pip==21.0.1', 'console_scripts', 'pip')()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/lib/python2.7/site-packages/pip/_internal/cli/main.py", line 60
sys.stderr.write(f"ERROR: {exc}")
^
SyntaxError: invalid syntax
原因:pip21.0.1版本在2020年1月停止支持Python2,在2020年3月停止支持Python3解决:在linux中可执行下面指令:wget https://bootstrap.pypa.io/3.5/get-pip.py
https://bootstrap.pypa.io/pip/3.5/get-pip.py(可能会提示用这个代替)
python3 get-pip.py
在Windows中,先自己下载下来该文件再执行第二条指令即可。可参考https://pip.pypa.io/en/stable/installing/#installing-with-get-pip-py https://github.com/tomas789/kitti2bag/issues/20