Solución:
Virtualenv crea un entorno de Python separado. Deberá reinstalar todas sus dependencias. EDITAR es cierto que pip no parece funcionar bien con opencv. El error del módulo que falta se puede resolver copiando el objeto compartido cv en su virtualenv. Más información en la pregunta vinculada a continuación.
Utilizo archivos MAKE en mis proyectos para instalar OpenCV dentro de Python virtualenv. A continuación se muestra un ejemplo estándar. Requiere que ya tenga enlaces OpenCV presentes para su sistema Python (/usr/bin/python
) que puedes obtener usando algo como yum install opencv-python
o apt-get install python-opencv
.
Realice las primeras consultas del sistema Python’s cv2
módulo y recupera la ubicación del archivo de biblioteca instalado. Entonces copia cv2.so
en el directorio 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, inspect; print(inspect.getfile(cv2))')
# Link global cv2 library file inside the virtual environment.
$(VENV_CV2): $(GLOBAL_CV2) venv
cp $(GLOBAL_CV2) [email protected]
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
(Puede copiar y pegar el fragmento anterior en un Makefile, pero asegúrese de reemplazar las sangrías con caracteres de tabulación ejecutando sed -i s:' ':'t':g Makefile
o similar.)
Ahora puede ejecutar la plantilla:
echo "numpy==1.9.1" > requirements.txt
make
make test
Tenga en cuenta que en lugar de un enlace simbólico, en realidad copiamos el archivo .so para evitar el problema que se indica aquí: https://stackoverflow.com/a/19138136/1510289
Simplemente copia del cv2*.so
archivo a la carpeta de paquetes de sitio del entorno virtual. Por ejemplo:
cp /usr/lib/python3.6/dist-packages/cv2.cpython-36m-aarch64-linux-gnu.so ~/your_virt_env_folder/YOUR_VIRT_ENV_NAME/lib/python3.6/site-packages/