【发布时间】:2016-01-10 00:08:20
【问题描述】:
我正在努力尝试使用 Python3.4.3 安装 OpenCV 3.0.0,并使用 pyenv 在虚拟环境中安装。我在 Ubuntu 14.04 上。
我使用各种信息来源尝试了很多事情: http://www.pyimagesearch.com/2015/07/20/install-opencv-3-0-and-python-3-4-on-ubuntu/ http://www.pyimagesearch.com/2015/06/29/install-opencv-3-0-and-python-3-4-on-osx/ Running OpenCV from a Python virtualenv How to install ipython qtconsole with pyenv (Python version 3.4.2)
对我来说最困难的部分是从 pyenv 链接到正确的 python。我在 pyenv 中安装了 3.4.3 和共享库(env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.4.3)和一个名为“dev”的虚拟环境,安装了 numpy 并可以正常工作。
我的cmake命令如下:
PREFIX_MAIN=`pyenv virtualenv-prefix`
PREFIX=`pyenv prefix`
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX="$PREFIX" \
-D PYTHON3_LIBRARY="$PREFIX_MAIN"/lib/libpython3.4m.so \
-D PYTHON3_INCLUDE_DIRS="$PREFIX_MAIN"/include/python3.4m \
-D PYTHON3_EXECUTABLE="$PREFIX"/bin/python3.4 \
-D PYTHON3_PACKAGES_PATH="$PREFIX"/lib/python3.4/site-packages/ \
-D PYTHON3_NUMPY_INCLUDE_DIRS="$PREFIX"/lib/python3.4/site-packages/numpy/core/include \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D BUILD_opencv_python3=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ..
但是 cmake 仍然不想找到 Python 3 Libraires(参见下面的 cmake 输出):
-- Python 2:
-- Interpreter: /home/group/.pyenv/shims/python2.7 (ver 2.7.6)
--
-- Python 3:
-- Interpreter: /home/group/.pyenv/versions/dev/bin/python3.4 (ver 3.4.3)
-- Libraries: NO
-- numpy: /home/group/.pyenv/versions/dev/lib/python3.4/site-packages/numpy/core/include (ver 1.10.0.post2)
-- packages path: /home/group/.pyenv/versions/dev/lib/python3.4/site-packages
--
-- Python (for build): /home/group/.pyenv/shims/python2.7
它似乎还想使用“/home/group/.pyenv/shims/python2.7”进行构建。我认为这不是问题。
调查 cmake 输出我发现以下内容:
-- Found PythonInterp: /home/group/.pyenv/versions/dev/bin/python3.4 (found suitable version "3.4.3", minimum required is "3.4")
-- Could NOT find PythonLibs: Found unsuitable version "3.4.0", but required is exact version "3.4.3" (found /home/group/.pyenv/versions/3.4.3/lib/libpython3.4m.so)
似乎 libpython3.4m.so 是版本 3.4.0.. 虽然我明确安装了 3.4.3...这可能是问题吗?如何获得正确的 PythonLibs?
我对这些事情的经验很少,坦率地说我在这里迷失了......
编辑:我尝试在我的 pyenv(env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.4.0)上使用 python 版本 3.4.0 进行编译,并且它使用上面的 cmake 命令工作。要么 opencv 明确想要 3.4.0,要么我不明白为 3.4.3 安装的共享库实际上是如何被视为 3.4.0...
编辑:pyenv 下的 python 2.7.10 也有同样的问题,你应该使用 2.7.6...
-- Found PythonInterp: /home/group/.pyenv/versions/cv2/bin/python2.7 (found suitable version "2.7.10", minimum required is "2.7")
-- Could NOT find PythonLibs: Found unsuitable version "2.7.6", but required is exact version "2.7.10" (found /home/group/.pyenv/versions/2.7.10/lib/libpython2.7.so)
【问题讨论】: