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的版本莫名其妙的變了才發現問題。