Basta copiare il cv2*.so
file nella cartella dei pacchetti del sito dell'ambiente virtuale. Ad esempio:
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/
Uso i makefile nei miei progetti per installare OpenCV all'interno di Python virtualenv. Di seguito è riportato un esempio boilerplate. Richiede che tu abbia già i collegamenti OpenCV presenti per il tuo sistema Python (/usr/bin/python
) che puoi ottenere usando qualcosa come yum install opencv-python
o apt-get install python-opencv
.
Fai le prime query al sistema cv2
di Python module e recupera la posizione del file della libreria installata. Quindi copia cv2.so
nella directory 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
(Puoi copiare e incollare sopra lo snippet in un Makefile, ma assicurati di sostituire i rientri con i caratteri di tabulazione eseguendo sed -i s:' ':'\t':g Makefile
o simili.)
Ora puoi eseguire il modello:
echo "numpy==1.9.1" > requirements.txt
make
make test
Nota che invece del collegamento simbolico, in realtà copiamo il file .so per evitare il problema indicato qui:https://stackoverflow.com/a/19138136/1510289
Virtualenv crea un ambiente Python separato. Dovrai reinstallare tutte le tue dipendenze. EDIT è vero che pip non sembra funzionare bene con opencv. L'errore del modulo mancante può essere risolto copiando l'oggetto condiviso cv nel tuo virtualenv. Maggiori informazioni nella domanda collegata di seguito.