2013-06-25 202 views
5

我在我的機器上安裝了兩個不同版本的python:2.4和2.7。我試圖爲2.7版本安裝OpenCV(2.4.5)。爲Python安裝OpenCV(多個python版本)

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON .. 

它檢測蟒蛇2.4作爲當前安裝:

-- Python: 
--  Interpreter:     /usr/bin/python2.4 (ver 2.4) 
--  Libraries:     /usr/lib64/python2.4/config/libpython2.4.a 
--  numpy:      /usr/lib64/python2.4/site-packages/numpy/core/include (ver 1.2.1) 
--  packages path:    lib/python2.4/site-packages 

,後來在建設OpenCV中給了我這個錯誤:

[ 75%] Generating pyopencv_generated_funcs.h, pyopencv_generated_func_tab.h, pyopencv_generated_types.h, pyopencv_generated_type_reg.h, pyopencv_generated_const_reg.h 
    File "/home/mmoghimi/opencv-2.4.5/modules/python/src2/gen2.py", line 815 
    cname1=("cv::Algorithm" if classinfo.isalgorithm else classinfo.cname))) 
          ^
SyntaxError: invalid syntax 
make[2]: *** [modules/python/pyopencv_generated_funcs.h] Error 1 
make[1]: *** [modules/python/CMakeFiles/opencv_python.dir/all] Error 2 
make: *** [all] Error 2 

顯然它使用python2的新格式。 4不支持。所以,我的問題是,有什麼方法可以明確指定python的版本?

回答

15

有一些Cmake標誌允許您明確指定要使用哪個版本的Python。您需要將這些標誌的值設置爲Python安裝的正確位置。

標誌名稱和可能的位置是下面:

PYTHON_EXECUTABLE=/usr/bin/python2.7/ 
PYTHON_INCLUDE=/usr/include/python2.7/ 
PYTHON_LIBRARY=/usr/lib/libpython2.7.a //or .so for shared library 
PYTHON_PACKAGES_PATH=/usr/local/lib/python2.7/site-packages/ 
PYTHON_NUMPY_INCLUDE_DIR=/usr/local/lib/python2.7/dist-packages/numpy/core/include 

如果這些路徑不工作,你需要找到他們的機器上。

+0

Yeap。這正是我終於做到的。 http://www.megalinux.net/compiling-opencv-2-4-on-rhelcentos-5/ –

+0

另外。我必須將modules/python/src2/cv2.cpp中的第一行從Python.h更改爲#include。否則,我認爲它是從2.4安裝中找到Python.h。 –

+3

在CMake GUI中,除非您標記「高級」勾號,否則這些標誌(大多數)都是隱藏的。 – lapis

2

使用virtualenv

virtualenv -p python2.7 env 
source env/bin/activate 
python --version # prints «Python 2.7.3» 
pip install pyopencv 

如果你需要支持的2.4(或其它版本),只要創建新的環境。

+0

我得到這個錯誤: 沒有發現任何發現opencv –

+0

我也試圖在虛擬環境中再次運行cmake,我也沒有工作。找到python 2.4 –

+0

呃...沒關係。這是我的錯誤,真正的OpenCV包名是pyopencv。 –