Einfach den cv2*.so
kopieren Datei in den Ordner site-packages der virtuellen Umgebung. Zum Beispiel:
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/
Ich verwende Makefiles in meinen Projekten, um OpenCV in Python virtualenv zu installieren. Unten ist ein Musterbeispiel. Es erfordert, dass Sie bereits OpenCV-Bindungen für Ihr System Python (/usr/bin/python
), die Sie mit so etwas wie yum install opencv-python
erhalten können oder apt-get install python-opencv
.
Machen Sie erste Abfragen von Pythons cv2
-Modul und ruft den Speicherort der installierten Bibliotheksdatei ab. Dann kopiert es cv2.so
in das virtualenv-Verzeichnis.
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
(Sie können das obige Snippet kopieren und in ein Makefile einfügen, aber stellen Sie sicher, dass Sie Einzüge durch Tabulatorzeichen ersetzen, indem Sie sed -i s:' ':'\t':g Makefile
ausführen oder ähnliches.)
Jetzt können Sie die Vorlage ausführen:
echo "numpy==1.9.1" > requirements.txt
make
make test
Beachten Sie, dass wir anstelle des symbolischen Links tatsächlich die .so-Datei kopieren, um das hier beschriebene Problem zu vermeiden:https://stackoverflow.com/a/19138136/1510289
Virtualenv erstellt eine separate Python-Umgebung. Sie müssen alle Ihre Abhängigkeiten neu installieren. BEARBEITEN es ist wahr Pip scheint nicht gut mit opencv zu spielen. Der Fehler des fehlenden Moduls kann behoben werden, indem Sie das gemeinsam genutzte cv-Objekt in Ihre virtuelle Umgebung kopieren. Weitere Informationen in der unten verlinkten Frage.