Me he topado con este problema con PIL y Pillow. No me di cuenta de que PIL ya estaba instalado, así que corrí:
sudo pip install PIL
Como mejor supe, instaló PIL. Luego escribí un programa que usaba una función en PIL que no funcionaba debido a un error dentro de PIL. Comencé a trabajar para solucionar ese problema y alguien me recomendó desinstalar PIL e instalar Pillow, que tiene una mejor interfaz para PIL. Así lo hice:
sudo pip uninstall PIL
sudo pip install Pillow
Luego, en una nueva ventana de Terminal que acababa de abrir, ejecuté un script en Python que incluía la línea:
import Pillow
y recibo este mensaje de error:
Traceback (most recent call last):
File "../HalPy/LandSearch/GetOurLotMap.py", line 7, in <module>
import Pillow
ImportError: No module named Pillow
pero si ejecuto:
pip show Pillow
me sale:
---
Name: Pillow
Version: 5.2.0
Location: /Library/Python/2.7/site-packages
Requires:
Desinstalé Pillow y luego lo instalé con la opción --user y se instaló en el árbol de directorios de la biblioteca de mi cuenta, pero no funcionó. He intentado casi todas las combinaciones que se me ocurren para instalar PIL o Pillow (nunca ambas al mismo tiempo), pero no importa lo que haga, no puedo importar Pillow. Python (versión 2.7) nunca lo reconoce como existente. Está allí, he comprobado el directorio y muestra que está allí, pero no lo está.
He instalado otros módulos con pip y se colocan en el mismo directorio (/Library/Python/2.7/site-packages) y se reconocen.
Lo mejor que puedo decir, ya que PIL está incluido en la instalación de Python de Apple, con todos los módulos en el árbol de directorios /System/Library/Frameworks/Python.framework/, cuando uso pip para instalarlo (o Pillow) , es ignorado por Python.
Antes de esto, tenía /Library/Python/2.7/site-packages en PYTHONPATH antes de cualquier listado de directorios en el árbol de directorios / System. También tengo, en /Library/Python/2.7/site-packages, un archivo llamado bypass-Apple-SIP.pth. Se supone que la extensión .pth lo ayudará a reemplazar los módulos en el árbol de directorios / Sistema. Dentro de este archivo está:
import sys
sys.path = ['/Library/Python/2.7/site-packages'] + sys.path
Por lo que puedo decir, esto ha funcionado antes, pero no estaba tratando de reemplazar un módulo que se instaló de forma predeterminada con la instalación de Apple en Python.
En el pasado usé MacPorts y descubrí que lo odiaba y tenía problemas con Perl (y, creo, Python). No quiero usar eso, Fink, Homebrew, ni nada de eso.
Tal como lo veo, me gustaría encontrar una manera de hacer una de estas:
- Desinstalar el PIL instalado de Apple
- Asegúrese de que Python dé prioridad a los módulos en /Library/Python/2.7/site-packages sobre los módulos preexistentes
- Obtenga Python para ver los módulos que se instalan en el árbol de mi directorio de inicio y utilícelos sobre los módulos preinstalados
- Cualquier otra cosa que me permita anular los módulos en /System/Library/Frameworks/Python.framework/ si tengo problemas con esos módulos preinstalados.
¿Cómo puedo hacer algo como cualquiera de esas ideas para usar Pillow sobre PIL y hacer que Python ignore la versión anterior 1.x de PIL que Apple instaló?