OpenCV和python / virtualenv?

我正在使用OpenCV(2.3.1)以及其他库中的python项目。 到目前为止,我只是apt-get安装了所有东西,但是现在我想和可能没有安装任何东西的人分享我的代码。 所以,virtualenv似乎是完美的解决scheme,但我明白这一点。

$ python src/importcv.py # does nothing but import cv, no problems $ virtualenv . # create virtualenv here $ source bin/activate # activates this virtualenv (p)$ python src/importcv.py Traceback (most recent call last): File "src/test.py", line 1, in <module> import cv ImportError: No module named cv 

如何设置virtualenv有什么问题,或者我必须做一些其他的步骤,所以它可以看到我的opencv python绑定?

Virtualenv创建一个单独的python环境。 您将需要重新安装所有的依赖关系。 编辑它是真正的点子似乎并没有与opencv打好。 缺少的模块错误可以通过将cv共享对象复制到virtualenv来解决。 在下面链接的问题更多的信息。

我在我的项目中使用makefile来在Python virtualenv中安装OpenCV。 以下是样板例子。 它需要你已经有系统Python( /usr/bin/python )的OpenCV绑定,你可以使用yum install opencv-pythonapt-get install python-opencv

首先查询系统的Python的cv2模块,并检索已安装的库文件的位置。 然后它将cv2.so复制到virtualenv目录中。

 VENV_LIB = venv/lib/python2.7 VENV_CV2 = $(VENV_LIB)/cv2.so # Find cv2 library for the global Python installation. GLOBAL_CV2 := $(shell /usr/bin/python -c 'import cv2; print(cv2)' | awk '{print $$4}' | sed s:"['>]":"":g) # Link global cv2 library file inside the virtual environment. $(VENV_CV2): $(GLOBAL_CV2) venv cp $(GLOBAL_CV2) $@ venv: requirements.txt test -d venv || virtualenv venv . venv/bin/activate && pip install -r requirements.txt test: $(VENV_CV2) . venv/bin/activate && python -c 'import cv2; print(cv2)' clean: rm -rf venv 

(你可以复制粘贴上面的代码片段到Makefile中,但是通过运行sed -is:' ':'\t':g Makefile或类似的代码来确保用制表符代替缩进。

现在你可以运行模板了:

 echo "numpy==1.9.1" > requirements.txt make make test 

请注意,而不是符号链接,我们实际上复制.so文件,以避免在这里注意到的问题: https : //stackoverflow.com/a/19138136/1510289