Estoy ejecutando un cuadro de Linux con ubuntu 14, ejecuta un servidor apache2 que aloja una aplicación Django. Esta aplicación importa PIL de la biblioteca de Pillow instalada. Todo funcionaba bien cuando estaba en Python 3.5, sin embargo, después de actualizar a Python 3.6 y reinstalar Pillow en Virtualenv, aparece un error cuando el servidor web intenta importar PIL.
Cuando ejecuto el intérprete de Python, todo se importa bien, ya que usa el script py directamente; sin embargo, como el servidor web está usando la biblioteca de almohadas instalada y compilada, está fallando. El error de Django muestra la pila como tal:
Internal Server Error: /ticket-printing/ Traceback (most recent call last): File "/home/ubuntu/ipos-venv/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner response = get_response(request) File "/home/ubuntu/ipos-venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response response = self._get_response(request) File "/home/ubuntu/ipos-venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response response = self.process_exception_by_middleware(e, request) File "/home/ubuntu/ipos-venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/ubuntu/ipos/tickets/views.py", line 30, in stic_app PrintList.initiateSticApp(request) File "/home/ubuntu/ipos/tickets/models.py", line 434, in initiateSticApp BrandLogo.createBlankLogo() File "/home/ubuntu/ipos/store_admin/brands/models.py", line 108, in createBlankLogo from PIL import Image File "/home/ubuntu/ipos-venv/lib/python3.6/site-packages/Pillow-4.1.0-py3.6-linux-x86_64.egg/PIL/Image.py", line 56, in <module> from . import _imaging as core File "/home/ubuntu/ipos-venv/lib/python3.6/site-packages/Pillow-4.1.0-py3.6-linux-x86_64.egg/PIL/_imaging.py", line 7, in <module> __bootstrap__() File "/home/ubuntu/ipos-venv/lib/python3.6/site-packages/Pillow-4.1.0-py3.6-linux-x86_64.egg/PIL/_imaging.py", line 6, in __bootstrap__ imp.load_dynamic(__name__,__file__) ImportError: /home/ubuntu/ipos-venv/lib/python3.6/site-packages/Pillow-4.1.0-py3.6-linux-x86_64.egg/PIL/_imaging.cpython-36m-x86_64-linux-gnu.so: undefined symbol: PySlice_AdjustIndicesIntenté desinstalar, reinstalar Pillow a través de pip, easy_install y el método tar.gz setup.py y todo falla.
Cualquier orientación y ayuda sería muy apreciada.
Gracias
Vaya, eso fue un montón de WTH...
Bien, después de probar casi todas las combinaciones de instalación y reinstalación de Pillow, decidí echar un vistazo a mi configuración de apache2/mod_wsgi.
Resulta que mi versión de mod_wsgi compilada con Python 2.7 no podía ejecutar el servidor mientras llamaba a los archivos compilados de Pillow.
Entonces, después de seguir algunas de las instrucciones aquí: https://pypi.python.org/pypi/mod_wsgi
Usé pip install mod_wsgi en mi virtualenv que creó un archivo .so en la carpeta site-packages/mod_wsgi de mi virtualenv. Luego copié ese archivo en /usr/lib/apache2/modules/mod_wsgi.so-XX y luego modifiqué el archivo /etc/apache2/mods-enabled/wsgi.load para señalar el nuevo archivo .so-XX.
Reinicié apache2 y el error dejó de aparecer nuevamente.
Un día entenderé estas cosas... Un día...