nvidia:tensorflow docker中默认是python3.6.8,在安装object detection api的过程中按照https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md
安装时,出现了以下问题,记录下来给有需要的人看
-
第一步安装依赖包, apt-get install protobuf-compiler python-pil python-lxml python-tk pip install Cython pip install contextlib2 pip install jupyter pip install matplotlib
python-pil python-lxml jupyter Cython matplotlib已有,不需要安装。
遇到两个问题,
(1)protobuf-compiler下不下来,怎么就是下不下来,翻墙也不好用。先把libprotobuf10_3.0.0-9.1ubuntu1_amd64.deb下下来后dpkg -i 安装;
(2)python-tk这个包是罪魁祸首,要装python3-tk,否则会自动安装python2.7版本,应该会设置为默认,然后环境会变乱。
2、 设置环境变量后,在terminal中可以测试object detection api通过,但在jupyter中却没有PYTHONPATH这个环境变量,env中直接没有。
# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
当然就没法调用,测试时直接提示
ModuleNotFoundError: No module named 'object_detection'
试了很多办法均无效,
##不管用
sys.path.append('/mnt/models/research')
sys.path.append('/mnt/models/research/slim')
sys.path
##不管用
!export PYTHONPATH=$PYTHONPATH:/mnt/models/research:/mnt/models/research/slim
!env
!pwd
!source ~/.bashrc
最后从sys.path中找到当下python的包路径:/usr/local/lib/python3.6/dist-packages,建立一个tensorflow_model.pth文件,文件内容写models的路径,slim的路径
/mnt/models/research
/mnt/models/research/slim
解决问题。
python-tk的问题真是困扰好久,安装后会发现,所有的包都不见了,jupyter退出后就再进不去了。后来发现python的版本莫名其妙的变了才发现问题。
要用 tensorflow/models中的内容时发现,
修改~/.bashrc
export PYTHONPATH="$PYTHONPATH:/....."
source ~/.bashrc
设置pythonpath还是不行,notebook中没有这个环境变量。。。。
还是在pth中加的
/mnt/models
/mnt/models/research/object_detection
/mnt/models/research
/mnt/models/research/slim