盡我所能,我沒有找到一個如何實現我想要的一步一步的教程。在virtualenv中的兩個版本的OpenCV,python
我想我的項目有兩種配置:python2 opencv2.4和python3 opencv3.1。爲此,我克隆了opencv並創建了一個遵循here教程的virtualenv(只是沒有樹莓派和CUDA,但在配置期間它只是一個標誌)。
Q1:當我爲python3創建另一個virtualenv時,應該如何有效地管理opencv的安裝?我能以某種方式鏈接到各種構建文件夾嗎?
刪除相同的生成文件夾,檢出一個opencv分支與各自的版本,並從頭開始構建它,當我切換virtualenv似乎是次優解決方案。
(假設,OpenCV的克隆到/home/libraries/opencv/
)
Q2:該教程描述在部分1中安裝各種依賴關係的OpenCV和python的。它在創建virtualenv之前。我是否仍然可以同時安裝例如python-dev和python-dev3,還是應該在virtualenv中覆蓋事物?
Q3: 我設法安裝和符號鏈接都正確OpenCV的版本,在每個virtualenv中的各自的Python版本。不過,我不完全理解cmake的輸出:
在執行cmake
(在默認情況下使用python2.7的virtualenv; OpenCV的git checkout 2.4.13
和opencv_contrib在主因爲有沒有對opencv2.4),它需要python2.7作爲翻譯。但是包路徑似乎不使用的virtualenv,這是爲什麼,爲什麼它仍然有效?:
-- Python:
-- Interpreter: /home/josh/.virtualenvs/tfpy2/bin/python2 (ver 2.7.6)
-- Libraries: /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.6)
-- numpy: /home/josh/.virtualenvs/tfpy2/local/lib/python2.7/site-packages/numpy/core/include (ver 1.12.0)
-- packages path: lib/python2.7/site-packages
雖然試圖與python3.4(git checkout 3.1.0
)使用的virtualenv,cmake的,現在似乎認識到兩個Python版本,但是似乎選擇錯誤的一個2.7(但我以某種方式成功與所需的3.4)。爲什麼它找到的virtualenv和python2.7內python3.4沒有,加上爲什麼選擇了錯誤的蟒蛇爲構建?:
-- Python 2:
-- Interpreter: /usr/bin/python2.7 (ver 2.7.6)
-- Libraries: /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.6)
-- numpy: /usr/local/lib/python2.7/dist-packages/numpy/core/include (ver 1.11.3)
-- packages path: lib/python2.7/dist-packages
--
-- Python 3:
-- Interpreter: /home/josh/.virtualenvs/tfpy3/bin/python3.4 (ver 3.4.3)
-- Libraries: /usr/lib/x86_64-linux-gnu/libpython3.4m.so (ver 3.4.3)
-- numpy: /home/josh/.virtualenvs/tfpy3/lib/python3.4/site-packages/numpy/core/include (ver 1.12.0)
-- packages path: lib/python3.4/site-packages
--
-- Python (for build): /usr/bin/python2.7
(我知道here是一些解決方案,但不是主要的想法virtualenv自動避免這樣的問題?另外,它似乎與here類似的問題,但由我如果錯誤版本的Python被識別/用於編譯,所以不能簡單地符號鏈接建庫。)
謝謝!我很高興看到您的解決方案!同時我遇到了一個問題,我在主要問題中進行了更新,以保持崗位清潔。你能看看並更新你的答案嗎? – beginh
另外,讓我只是保證,我知道什麼在引擎蓋下運行。基本上所有的依賴關係都需要OpenCV來構建cv2.so庫。根據我所使用的virtualenv,將安裝複製,然後將.so文件複製到python2.7和python3.4的站點包中。所以我可以自由刪除克隆的存儲庫,是嗎? 我不明白的是爲什麼numpy安裝在virtualenv中,而不是之前?如果我使用virtualenv安裝了numpy和/或OpenCV,會被覆蓋嗎? – beginh