一直在愉快地开发一个使用opencv在虚拟环境中整合Python的业余爱好项目。尝试重新命名python virtualenv,opencv错误
今天出于管理的原因,我需要更改虚拟环境的名称。使用virtualenvwrapper与其他项目已经这样做之前没有问题:
cpvirtualenv oldenv newenv
rmvirtualenv oldenv
所以基本上完全一样,但改名具有相同的PIP副本安装,OpenCV的文件等等。但是现在,当我在newenv运行Python脚本,我得到:
(opencv)[1][email protected] ~/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
如果我测试蟒蛇品种壳它确认自己是不是正确:
(opencv)[1][email protected] ~/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中工作,上面的所有工作都是有效的。
因此,我的newenv作品取决于oldenv仍然存在。我不明白为什么,因为我可以确认newenv是在文件和结构,包括cv.py等方面的oldenv的副本。
坚持了整整一天,我并不聪明。如果任何人都可以如此善待我,我会非常感激。
@vikramis,谢谢,但'pip freeze --local'对oldenv&newenv,即Pillow,scipy&numpy都会产生相同的结果。 – user3548783 2014-11-15 00:25:58
是的,因为你复制了环境。我说这个副本并没有改变环境中.so文件中的rpath。我只是建议替换'cpvirtualenv'。 – vikramls 2014-11-15 00:28:18
感谢vikramls。使用sublimetext在newenv目录中的所有文件中搜索'oldenv'。这在手动编辑的newenv/bin中返回了一些oldenv结果。还将所有.so文件复制到newenv/lib。我想'cpvirtualenv'并不总是一个全面的重命名virtualenvs的解决方案。 – user3548783 2014-11-15 01:18:17