2010-11-06 7 views
4

Un peu d'histoire de la construction de setup.py PIL:PIL ne sera pas importer le module _imaging C: "*** Le module _imaging C est pas installé"

-------------------------------------------------------------------- 
PIL 1.1.7 SETUP SUMMARY 
-------------------------------------------------------------------- 
version  1.1.7 
platform  linux2 2.6.2 (release26-maint, Apr 19 2009, 01:58:18) 
       [GCC 4.3.3] 
-------------------------------------------------------------------- 
*** TKINTER support not available 
--- JPEG support available 
--- ZLIB (PNG/ZIP) support available 
--- FREETYPE2 support available 
*** LITTLECMS support not available 
-------------------------------------------------------------------- 

Ceci est sur une installation Ubuntu 9.04 .

J'ai seulement besoin de PIL pour permettre à Django de télécharger et redimensionner diverses images (de différents formats). Malheureusement, il ne peut pas actuellement traiter les fichiers JPEG. Après avoir effectué la selftest.py de PIL, il est venu avec ceci:

*** The _imaging C module is not installed 

J'ai essayé d'importer l'image et _imaging en utilisant l'interpréteur du python (qui ont tous deux travaillé) ...

>>> from PIL import Image 
import PIL # directory PIL 
# PIL/__init__.pyc matches PIL/__init__.py 
import PIL # precompiled from PIL/__init__.pyc 
# PIL/Image.pyc matches PIL/Image.py 
import PIL.Image # precompiled from PIL/Image.pyc 

[continue avec succès pendant un bon moment]

>>> import _imaging 
dlopen("/usr/local/lib/python2.6/dist-packages/PIL/_imaging.so", 2); 
import _imaging # dynamically loaded from /usr/local/lib/python2.6/dist-packages/PIL/_imaging.so 

donc _imaging est disponible lorsque vous utilisez l'interpréteur python, mais pour une raison quelconque n'est pas correctement importé dans d'autres cas.

Je suis à la recherche de solutions à ce problème depuis plusieurs heures et je n'ai pas cherché à en trouver un. Est-ce que je manque quelque chose d'une stupide évidence? Ou y a-t-il des idées pour expliquer pourquoi cela ne fonctionne pas?

Merci d'avance!

En outre: Je suis au courant de http://effbot.org/zone/pil-imaging-not-installed.htm mais cela ne fait que démontrer l'erreur et ne fournit aucune solution.

EDIT: J'ai navigué autour et il semble que l'importation de _imagingmath est le problème. Je l'ai fait la selftest.py de python pour voir où il se brisait, et voici comment il est arrivé:

dlopen("/usr/local/lib/python2.6/dist-packages/PIL/_imagingmath.so", 2); 
import _imagingmath # dynamically loaded from /usr/local/lib/python2.6/dist-packages/PIL/_imagingmath.so 
*** The _imaging C module is not installed 
# clear __builtin__._ 
[etc. etc. etc.] 

Répondre

5

Il semble qu'avant d'installer PIL, je n'ai pas installé libjpeg. J'ai donc installé libjpeg-62 et libjpeg62-dev, puis réinstallé PIL. La même erreur

*** The _imaging C module is not installed 

J'ai trouvé une solution potentielle sur un autre site suggérant que je force la reconstruction PIL de la source:

sudo python setup.py build_ext -f 

Cette a jeté quelques morceaux intéressants d'informations sur cette erreur (si vous Avoir ce problème aussi). Il semble que gcc ne compile différents fichiers correctement (je gcc4.3.3), à savoir les éléments suivants:

_imaging.c:3017: warning: initialization from incompatible pointer type 
_imaging.c:3077: warning: initialization from incompatible pointer type 
libImaging/Quant.c: In function 'rehash_collide': 
libImaging/Quant.c:154: warning: cast to pointer from integer of different size 

(tout semble bien)

J'ai fait un peu de recherche sur ce sujet et certains autres sites suggèrent que c'est parce que la version de gcc que j'utilise pour construire PIL est différente de la version utilisée pour construire le Python python.org que j'utilise.Cela a beaucoup de sens. Here's the other question I found that suggests this.

Enfin, j'ai essayé une dernière installation, mais cette fois à partir du référentiel par opposition au tar que j'ai téléchargé. Cela semble avoir résolu le problème.

sudo apt-get install python-imaging 

Bien que je ne l'ai pas entièrement répondu au problème d'origine, j'ai trouvé une solution de rechange, et nous espérons que les informations ci-dessus sera en mesure d'aider quelqu'un d'autre dans cette situation!

0

Vous n'avez pas installé la bibliothèque libjpeg. Pour ce faire:

sudo apt-get install libjpeg 

et de redémarrer l'installation PIL.

+0

Cela me donne l'erreur: « E: Impossible de trouver paquet libjpeg ». J'ai déjà installé libjpeg62 - est-ce équivalent? –

+0

avez-vous libjpeg62-devel? –

+0

Non, j'ai libjpeg62 et libjpeg62-dev cependant. –

2

Je fixe en installant le libjpeg de développement:

sudo apt-get install libjpeg8-dev 

puis réinstaller le module PIL tout à fait.

(J'utilise un environnement virtuel, mais il devrait fonctionner tout aussi bien en cours d'exécution Python standard)

Questions connexes