Copiez simplement le cv2*.so
dans le dossier site-packages de l'environnement virtuel. Par exemple :
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/
J'utilise des makefiles dans mes projets pour installer OpenCV dans Python virtualenv. Vous trouverez ci-dessous un exemple passe-partout. Cela nécessite que vous ayez déjà des liaisons OpenCV présentes pour votre système Python (/usr/bin/python
) que vous pouvez obtenir en utilisant quelque chose comme yum install opencv-python
ou apt-get install python-opencv
.
Faire les premières requêtes du système Python cv2
module et récupère l'emplacement du fichier de bibliothèque installé. Ensuite, il copie cv2.so
dans le répertoire 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
(Vous pouvez copier-coller l'extrait ci-dessus dans un Makefile, mais assurez-vous de remplacer les indentations par des caractères de tabulation en exécutant sed -i s:' ':'\t':g Makefile
ou similaire.)
Vous pouvez maintenant exécuter le modèle :
echo "numpy==1.9.1" > requirements.txt
make
make test
Notez qu'au lieu du lien symbolique, nous copions en fait le fichier .so afin d'éviter le problème noté ici :https://stackoverflow.com/a/19138136/1510289
Virtualenv crée un environnement python séparé. Vous devrez réinstaller toutes vos dépendances. EDIT c'est vrai pip ne semble pas bien jouer avec opencv. L'erreur de module manquant peut être résolue en copiant l'objet partagé cv dans votre virtualenv. Plus d'informations dans la question liée ci-dessous.