Windows 10 編譯 Pycocotools 踩坑記
本文是 Pycocotools 編譯踩坑筆記。如果您的環境是 Linux,那麼恭喜您,獲取 COCO 原始碼,簡單一個 make 即可,本文可以忽略了;然而,如果是 Windows,滿滿都是坑,生踩過來,筆者也是醉了。
版權宣告:本文為 frendy 原創文章,可以隨意轉載,但請務必在明確位置註明出處。
名詞解釋
- COCO 是什麼?
Microsoft COCO 是一個標註過的圖片資料集,可用以目標檢測、分割和描述生成等。Yep, it's all about MS COCO API...
- Pycocotools 是什麼?
顧名思義,python api tools of coco...
實操走起
- 獲取原始碼
git clone https://github.com/pdollar/coco.git
- 編譯
cd coco/PythonAPI
# install pycocotools locally
python setup.py build_ext --inplace
# install pycocotools to the Python site-packages
python setup.py build_ext install
嗯,如果順利完成,恭喜您大踏步邁過,來來握個手!嗯,如果掉坑了也不怕,慢慢解決,希望筆者下面的踩坑筆記可以幫到您吧。
各種踩坑
這裡筆者主要遇到的有兩個問題:
1. Unable to find vcvarsall.bat
其實解決辦法也挺簡單,配置好 Visual C++ 編譯環境即可。筆者這裡安裝的 VS 2015,於是找到安裝包 vs_Community.exe,安裝新增 C++ 相關即可。需要注意的是環境變數,如下所示,請確保與本機 VS 版本對應的工具目錄配置,這裡是
VS140COMNTOOLS。
如果問題依舊,可嘗試新增 VS90COMNTOOLS 指向 VS140COMNTOOLS。
那麼,為什麼是 VS90COMNTOOLS?
我們來看看編譯過程中是如何尋找 vcvarsall.bat 的吧。在檔案 ..\Anaconda3\Lib\distutils\msvc9compiler.py 中定位到函式
find_vcvarsall()。如下圖示,如果都失敗了,最後會找到環境變數 VS90COMNTOOLS。嗯,bingo:
2. cl: 命令列 error D8021 :無效的數值引數“/Wno-cpp” 和 cl: 命令列 error D8021 :無效的數值引數“/Wno-unused-function”
糾結了很久,Github 上有類似的問題 #51,然而 COCO 的作者 pdollar 已明確答覆不會支援 Windows 哎...踩到這裡,筆者也是不想輕易放棄,於是暴力刪掉吧,把引數 Wno-cpp 和 Wno-unused-function 都刪掉刪掉,如下圖所示:
嗯,然後編譯通過!是否能正常使用呢?我們在 image caption 的 demo 裡試試水,如下圖示,可用可用!嗯,什麼 COCO,什麼 Pycocotools,都是前戲,筆者想實現的是 image caption,後續有進展單獨碼一篇相關的文字吧。
相關文章
- ijkplayer編譯踩坑記錄編譯
- Laragon 編譯 Vue 踩坑記錄Go編譯Vue
- Laravel Mix 編譯 Vue 踩坑記錄Laravel編譯Vue
- 【踩坑記】Ubuntu 20.04.6 LTS下編譯安裝gcc 4.4.0Ubuntu編譯GC
- [心得]Mac下編譯thrift踩坑總結Mac編譯
- Windows 使用 Homsetead 報錯踩坑記錄Windows
- Windows+Apache+Python+Django 踩坑記錄WindowsApachePythonDjango
- removeChild踩坑記REM
- mpVue 踩坑記Vue
- vue 踩坑記Vue
- vuepress踩坑記Vue
- IE 踩坑記
- Dubbo 2.7.1 踩坑記
- RN 踩坑:雜記
- 踩坑日記(1)
- PHP 8 踩坑記PHP
- laravel踩坑記錄Laravel
- DelayedWorkQueue踩坑筆記筆記
- sealos踩坑記錄
- DietPi踩坑記錄
- Windows10+Anaconda3安裝pycocotools 不踩雷!Windows
- 為 Android 編譯並整合 FFmpeg 的嘗試與踩坑Android編譯
- 寫Java這麼久,JDK原始碼編譯過沒?編譯JDK原始碼踩坑紀實JavaJDK原始碼編譯
- Linux 做 SSH 免密連線 Windows 踩坑記錄LinuxWindows
- strtotime 踩坑記錄
- Sentry 部署踩坑記
- Nginx的踩坑日記Nginx
- 筆記:Mysql踩坑之路筆記MySql
- ABP框架踩坑記錄框架
- Electron工程踩坑記錄
- Realm ios踩坑筆記iOS筆記
- MUI的踩坑筆記UI筆記
- Go踩坑筆記(十九)Go筆記
- gorm踩坑記錄(一)GoORM
- Opengl ES之踩坑記
- 踩坑記[持續更新]
- Laravel 整合 phpCAS 踩坑記LaravelPHPPCA
- Electron踩坑日記-2