71 votes

Le problème de l'installation de PIL en utilisant virtualenv ou buildout

Lorsque j'installe PIL à l'aide de easy_install ou buildout, il s'installe de telle manière que je dois faire 'import Image', et non 'from PIL import Image'.

Cependant, si je fais "apt-get install python-imaging" ou si j'utilise "pip -E test_pil install PIL", tout fonctionne bien.

Voici des exemples de la façon dont j'ai essayé d'installer PIL en utilisant virtualenv :

# virtualenv --no-site-packages test_pil
# test_pil/bin/easy_install PIL
# test_pil/bin/python
Python 2.5.1 (r251:54863, Feb  6 2009, 19:02:12) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named PIL

Je vois, que easy_install emballe PIL dans l'oeuf, et PIP ne le fait pas. Même chose avec buildbot, il utilise des œufs.

Comment pourrais-je installer correctement PIL, en utilisant easy_install ou buildout ?

95voto

Martijn Pieters Points 271458

La version PIL empaquetée sur pypi (par l'auteur) est incompatible avec setuptools et donc pas facile à installer. Des personnes ont créé des versions faciles à installer ailleurs. Actuellement, vous devez spécifier une URL de recherche de liens et utiliser pip obtenir un bon paquet :

pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL

En utilisant pip install avec le --no-index vous évitez de courir le risque de trouver l'original PyPI (non fixé) de PIL. Si vous deviez utiliser easy_install vous devez utiliser un lien direct vers le tarball source d'une version corrigée ; easy_install s'entête à utiliser le lien PyPI plutôt que l'URL find-links :

easy_install http://dist.plone.org/thirdparty/PIL-1.1.7.tar.gz

Pour inclure PIL dans un buildout, il faut soit spécifier l'oeuf avec le même pin de version, soit utiliser une section versions :

[buildout]
parts =
find-links =
    http://dist.plone.org/thirdparty/
eggs =
    PIL
versions = versions

[versions]
PIL = 1.1.7

Édition mars 2011 : Les corrections pour résoudre les problèmes d'emballage ont été fusionnées en L'arbre de développement du PIL maintenant, donc cette solution de contournement pourrait bientôt être obsolète.

Édition février 2013 : Il suffit d'utiliser Oreiller et en finir. :-) Il est clair que le fait d'attendre que le paquet original soit réparé n'a pas porté ses fruits.

79voto

aclark Points 3376

L'utilisation de l'Oreiller: "l'ami" PIL fourche :- )), Il offre:

  • Plein setuptools compatibilité
  • Libération plus rapide du cycle de
  • Pas d'image changement de code qui diffèrent de PIL (c'est à dire qu'il vise à assurer le suivi de tous les PIL image des changements de code, et de faire aucune de ses propres changements sans les rapporter en amont.)
  • Des binaires pour Windows

Si PIL jamais fait exactement ce Coussin est le cas, la fourchette va mourir. En attendant, nous avons Oreiller.

AVERTISSEMENT: je suis la fourche auteur et les taies d'Oreiller a été créé principalement pour faciliter mon travail (même si c'est génial de voir d'autres gens à l'aide d').

EDIT: Oreiller 2.0.0 a été publié le 15 Mars 2013. Il propose Python 3 et de nombreuses corrections de bugs et améliorations. Tandis que nous continuons de tenter de suivre les changements en amont PIL, (malheureusement ou heureusement, selon la façon dont vous le regardez) Oreiller a commencé à s'éloigner de la LIP.

8voto

yuvilio Points 1123

Pour Ubuntu, j'ai trouvé que je devais installer le C-têtes de paquet pour ma version de python (2.7)

sudo apt-get install python2.7-dev

Par la suite, pip install pil a travaillé.

6voto

Sous Windows, j'ai installé PIL dans un virtualenv comme suit :

Installez PIL dans vos paquets de sites python globaux en exécutant le fichier .exe : http://www.pythonware.com/products/pil/

Ensuite, en tant que "bricoleur", copiez le fichier PIL.pth et le répertoire PIL dans le dossier de l'utilisateur. C:\Python25\Lib\site -packages dans votre répertoire virtualenv site-packages. Oui, python est toujours un environnement "pour se salir les mains"...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X