web-dev-qa-db-fra.com

Le problème avec l'installation de PIL à l'aide de virtualenv ou buildout

Lorsque j'installe PIL en utilisant easy_install ou buildout, il s'installe de telle manière que je dois faire "importer l'image", pas "à partir de l'image d'importation PIL".

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

Voici des exemples de la façon dont j'essaie d'installer PIL à l'aide de 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, ce pack easy_install PIL dans l'oeuf, et pas PIP. Même chose avec buildbot, il utilise des œufs.

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

70

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

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 fixe) de PIL. Si vous deviez utiliser easy_install, vous devez utiliser un lien direct vers l'archive tar source d'une version corrigée; easy_install utilise toujours obstinément le lien PyPI sur l'URL find-links:

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

Pour inclure PIL dans un buildout, spécifiez l'oeuf avec la même broche de version ou utilisez une section de versions:

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

[versions]
PIL = 1.1.7

Edit mars 2011: des correctifs pour résoudre les problèmes de conditionnement ont été fusionnés dans arbre de développement de PIL maintenant, donc cette solution de contournement pourrait bientôt être obsolète.

Edit février 2013: utilisez simplement Pillow et terminez avec. :-) Attendre clairement que le paquet d'origine soit réparé n'a pas payé.

96
Martijn Pieters

Utilisez Oreiller: la fourche PIL "conviviale :-) Il offre:

  • Compatibilité totale avec setuptools
  • Cycle de libération plus rapide
  • Aucun changement de code d'image différent de PIL (c'est-à-dire qu'il vise à suivre tous les changements de code d'image PIL et à ne faire aucun de ses propres changements sans les signaler en amont.)
  • Binaires Windows

Si PIL fait exactement ce que fait Pillow, la fourchette mourra. Jusqu'à ce que cela se produise, nous avons un oreiller.

[~ # ~] clause de non-responsabilité [~ # ~] : je suis l'auteur de fork, et Pillow a été créé principalement pour faciliter mon travail (même si c'est génial pour voir d'autres personnes l'utiliser aussi).

[~ # ~] modifier [~ # ~] : Pillow 2.0.0 est sorti le 15 mars 2013. Il offre Python 3 support et nombreuses corrections de bugs/améliorations. Bien que nous essayions toujours de suivre les changements avec PIL en amont, (malheureusement ou heureusement selon la façon dont vous le voyez), Pillow a commencé à s'éloigner de PIL.

79
aclark

Pour Ubuntu, j'ai trouvé que j'avais besoin d'installer le paquet d'en-têtes C pour ma version python (2.7)

Sudo apt-get install python2.7-dev

Ensuite, pip install pil travaillé.

8
yuvilio

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

Installez PIL dans vos packages de site globaux python en exécutant le .exe à partir de: http://www.pythonware.com/products/pil/

Ensuite, en tant que "faites-le vous-même", copiez le fichier PIL.pth et le répertoire PIL dans C:\Python25\Lib\site-packages dans votre répertoire virtualenv site-packages. Ouais, python est toujours un environnement "se salir les mains" ...

6