PIL: le chargement de la DLL a échoué: la procédure spécifiée est introuvable

J'ai commencé à travailler avec des images en Python et je voulais commencer à utiliser PIL (Pillow). Pour l'installer, j'ai couru pip install Pillow. Lors de l'installation, PIL n'a pas été installé auparavant. J'ai également essayé de le désinstaller et de le réinstaller, ainsi que d'utiliser pip3 install Pillow.

Quand je l'exécute en Python, ma première ligne est:

File "C:Program FilesPython36libsite-packagesPILImage.py", line 56, in <module>
from . import _imaging as core
ImportError: DLL load failed: The specified procedure could not be found.

J'ai vérifié le répertoire et le fichier _imaging.cp36-win_amd64.pyd est présent sous le dossier PIL.

Pourquoi cela se produit - il si la DLL nécessaire est là? Comment puis-je résoudre ce problème?

27
demandé sur MLavrentyev 2017-04-06 23:01:17

7 réponses

J'ai eu ce problème aussi avec Python 3.6. J'ai juste évité le problème en désinstallant pillow (4.1.0), puis en installant une ancienne version de pillow (4.0.0). Il semble fonctionner correctement avec l'ancienne version.

36
répondu Sean 2017-04-08 12:28:00

Comme dans la réponse de Sean, j'ai dû désinstaller (j'utilise Anaconda Python 3.6, BTW) avec

conda uninstall pillow

Je l'ai essayé avec PIL, mais il n'y avait pas un tel paquet. Désinstaller pillow signifiait également désinstaller les paquets qui en dépendent, dans mon cas "Anaconda-navigator" et "scikit-image". Après avoir réinstallé Pillow 4.0.0 avec

 conda install pillow=4.0.0

Et testé avec

python -c "from PIL import Image"

Qui, en cas de succès, vous ne voyez pas de message d'erreur, j'ai réinstallé les paquets qui ont été désinstallés avec Pillow 4.1.0.

conda install anaconda-navigator
conda install scikit-image
21
répondu Ed Bernal 2017-04-12 14:46:47

Ce problème est également corrigé en mettant à niveau Python vers 3.6.1, par cette discussion GitHub.

La différence est que Pillow 4.1.0 a été construit avec Python 3.6.1 tandis que Pillow 4.0.0 a été construit avec Python 3.6.0.

Apparemment PYTHON36.DLL de python 3.6.0 manque des fonctions (PySlice_AdjustIndices et PySlice_Unpack) qui sont utilisées lors de la construction avec Python 3.6.1.

La solution consiste à mettre à niveau vers Python 3.6.1.

5
répondu Joseph Montanaro 2017-04-19 18:59:47

Il y a un problème en Python lui-même, ce qui signifie que les roues binaires construites en utilisant python 3.6.1 (comme Pillow 4.1.0) ne s'installeront pas sur Python 3.6.0.

Cela a affecté un certain nombre de bibliothèques Python.

Cependant, il y a la nouvelle version de pillow 4.1.1 qui fonctionne autour de cela, donc vous pouvez maintenant mettre à jour vers Pillow 4.1.1 et l'utiliser avec Python 3.6.0 et 3.6.1.

Plus info:

2
répondu Hugo 2017-05-01 16:58:01

J'ai eu le même problème avec anaconda 5.0.1, en l'utilisant avec caffe sur windows 10. je viens de le faire

conda install PIL

Ça a marché pour moi.

1
répondu Khan 2018-01-30 11:59:03

Cela fonctionne pour moi en utilisant win10 et PY 3.6. Il suffit de désinstaller oreiller 4.1.0 pip3 désinstaller oreiller Puis installez oreiller 4.0.0 pip3 installer Oreiller==4.0.0

0
répondu dsixnine 2017-04-25 08:48:17

Si vous utilisez Anaconda, essayez

conda uninstall pillow et puis pip install pillow

Est tombé sur ce problème en travaillant sur Caffe2 sur Windows 10 (anaconda 4.5) et cela a fonctionné pour moi. Voici le GitHub post sur ce problème.

0
répondu rakidedigama 2018-08-21 11:27:43