就我而言,我没有找到如何实现我想要的一步一步的教程。
我想为我的项目配置两个配置:带有opencv2.4的python2和带有opencv3.1的python3。为此我克隆了opencv,并根据here的教程创建了一个virtualenv(只是没有覆盆子PI和CUDA,但在配置期间它只是一个标志)。
Q1:当我为python3创建另一个virtualenv时,我应该如何有效地管理opencv的安装?我可以以某种方式链接到各种构建文件夹吗?
删除相同的构建文件夹,检查具有相应版本的opencv分支,并在每次切换virtualenv时从头开始构建它似乎是次优解决方案。
(假设,opencv被克隆到/home/libraries/opencv/
)
Q2:本教程在第1节中介绍了opencv和python的各种依赖项的安装。这是在创建virtualenv之前。我可以同时安装例如python-dev和python-dev3,还是应该覆盖virtualenv中的内容?
Q3: 我设法在每个virtualenv中正确安装和符号链接两个opencv版本和各自的python版本。但是我不完全理解cmake输出:
执行cmake
(在virtualenv中默认使用python2.7; opencv git checkout 2.4.13
和opencv_contrib在master中,因为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
在尝试使用virtualenv和python3.4(git checkout 3.1.0
)时,cmake现在似乎认识到两个python版本,但似乎选择了错误的2.7(但我以某种方式成功构建了所需的3.4)。为什么在virtualenv和python2.7中找不到python3.4,加上为什么选择错误的python进行构建?:
-- 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,那么不能简单地对构建的库进行符号链接。)
答案 0 :(得分:1)
A1:您可以按如下方式重复使用OpenCV源。首先,您构建OpenCV 2.4,类似于您引用的方式,但对opencv和opencv_contrib都执行git checkout 2.4.13
而不是3.1.0。
一旦构建并安装(使用make install)版本2.4,然后删除构建文件夹,执行git checkout 3.1.0
,配置构建,因此它使用Python 3.再次构建和安装。此时,您应该在计算机上构建并安装两个OpenCV版本。
A2:virtualenv是关于库的python模块或python绑定。注意,教程如何使用virtualenv:你在virtualenv中安装numpy并创建一个cv2.so链接,以支持此环境的python版本。
答案 1 :(得分:0)
您可以考虑使用Anaconda进行Python开发。其Miniconda适用于Raspberry Pi等物联网设备。
Anaconda通过其conda-env
包和配置确实支持虚拟环境。使用conda-env
,您可以运行Python的多个副本和版本。通过conda install
安装OpenCV,这将在您注册后从其Anaconda cloud软件包存储库下载Python软件包。这将减少下载,包依赖和安装方面的许多麻烦。对于Anaconda Cloud中没有的软件包,可以将任何pip install
支持的python软件包安装到Anaconda。有一个学习曲线但不太难以接受。
希望得到这个帮助。
免责声明:我不是Anaconda,只是它的用户。