试图重命名python virtualenv,opencv错误

时间:2014-11-14 18:04:49

标签: python opencv virtualenv rename

很高兴使用opencv在虚拟环境中开发一个包含python的爱好项目。

今天出于管理原因,我需要更改虚拟环境的名称。之前已经使用virtualenvwrapper进行了其他项目而没有问题:

cpvirtualenv oldenv newenv
rmvirtualenv oldenv

所以基本完全相同,但重命名的副本使用相同的pip安装,opencv文件等。但是现在当我在newenv中运行python脚本时,我得到:

(opencv)[1]dan@dual-lt ~/PyProjects/facedetect $ python facedetectlive.py
Traceback (most recent call last):
File "facedetectlive.py", line 10, in <module>
import cv
File "/home/dan/PyProjects/.virtualenvs/opencv/lib/python2.7/site-packages/cv.py", line 1, in <module>
from cv2.cv import *
ImportError: libopencv_core.so.2.4: cannot open shared object file: No such file or directory

如果我从python shell测试cv,它确认某些内容不对:

(opencv)[1]dan@dual-lt ~/PyProjects/facedetect $ python
Python 2.7.5+ (default, Sep 17 2013, 15:31:50) 
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/dan/PyProjects/.virtualenvs/opencv/lib/python2.7/site-packages/cv.py", line 1, in <module>
    from cv2.cv import *
ImportError: libopencv_core.so.2.4: cannot open shared object file: No such file or directory
>>> import numpy
>>> import scipy
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libopencv_core.so.2.4: cannot open shared object file: No such file or directory

奇怪的是,如果我恢复oldenv所以newenv和oldenv并排在.virtualenvs然后上面的所有工作,即使我在newenv工作。

因此,对于我的新作品,取决于oldenv仍在那里。我不明白为什么我可以确认newenv是文件和结构(包括cv.py等)的oldenv的副本。

坚持了一整天,我没有聪明。如果有人能够如此友善,我就会非常感激。

1 个答案:

答案 0 :(得分:0)

这可能是因为在执行import cv时加载了共享库。使用rpath找到共享库,并且cpvirtualenv可能不会更改已安装库的rpath。

当你并排使用它们时,原始库现在可以找到并且导入成功。

一种解决方案是使用pip freeeze从旧环境中获取requirements.txt并使用它来获取新环境中的所有包。