python – pyinstaller “RuntimeWarning: módulo principal ‘PyInstaller.hooks.hook.hook-PIL’ no encontrado al manejar la importación absoluta” y “tcl” errores relacionados

Recibo un mensaje de advertencia al intentar crear un archivo pyinstaller con pyinstaller . Esta advertencia apareció después de instalar Pillow . Anteriormente, no recibí ninguna advertencia y pude hacerlo.

la advertencia que recibo por pyinstaller es:

 7314 INFO: Analyzing main.py /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyInstaller-2.1.1dev_-py2.7.egg/PyInstaller/hooks/hook-PIL.Image.py:14: RuntimeWarning: Parent module 'PyInstaller.hooks.hook-PIL' not found while handling absolute import from PyInstaller.hooks.shared_PIL_Image import * 

Además, cuando intenté ejecutar la versión exe / consola del ejecutable de mi código que se encuentra dentro de la carpeta dist creada por el pyinstaller ( dist/main/main ), se muestran estos …

 Traceback (most recent call last): File "", line 26, in  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyInstaller-2.1.1dev_-py2.7.egg/PyInstaller/loader/pyi_importers.py", line 276, in load_module exec(bytecode, module.__dict__) File "/Users/..../build/main/out00-PYZ.pyz/PIL.PngImagePlugin", line 40, in  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyInstaller-2.1.1dev_-py2.7.egg/PyInstaller/loader/pyi_importers.py", line 276, in load_module exec(bytecode, module.__dict__) File "/Users/..../build/main/out00-PYZ.pyz/PIL.Image", line 53, in  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyInstaller-2.1.1dev_-py2.7.egg/PyInstaller/loader/pyi_importers.py", line 276, in load_module exec(bytecode, module.__dict__) File "/Users/..../build/main/out00-PYZ.pyz/FixTk", line 74, in  OSError: [Errno 20] Not a directory: '/Users/.../dist/main/tcl' logout [Process completed] 

Así que lo intenté desinstalando pillow , instalando la versión tk tcl dev . Y luego instaló la pillow . Incluso eso no ayudó.

También traté de reinstalar pyinstaller tampoco ayudó

Actualización 1:

Parece que el archivo Pyinstaller.hooks.hook-PIL.py no se encuentra en el directorio Pyinstaller/hooks . Y faltaba en todas las plataformas (Mac, Windows y Linux). Este es el mensaje de advertencia / error que recibo en Windows, que es el mismo que recibí en Mac y en Linux. error / advertencia de windows Más tarde, encontré un enlace que decía: es just to need Python import machinery happy . Así que creé como dije. Entonces no recibo el mismo error en todas las plataformas, pero en mac todavía obtengo los PILImagePlugin , Image y FixTk

Solución para tcl :

Encontré lo que iba mal, … Todos los problemas que enfrenté en OSX era el OS sí (exactamente el macport ). Python por defecto viene con el sistema operativo mac. Y esta versión de python puede ser útil solo para aprender python básico, pero no es adecuada para fines de desarrollo.

La instalación de python de brew ayudó. Seguí este enlace SO . Después de hacer esto todavía estaba recibiendo errores. Más tarde tuve que cambiar las rutas en /etc/paths . Básicamente reorganizarlos debería funcionar. Pero aún así no lo estaba haciendo bien.

Luego tuve que cambiar el .bash_profile , que funcionó para la mayoría de los usuarios, pero aún así obtenía la versión mac de python y pip, no la versión de brews de python.

Finalmente, tuve que reiniciar la máquina un par de veces y hacer los pasos /etc/paths y .bash_profile repetidamente para obtener el efecto de todo el sistema de aceptar versiones de python y pip


Solución para PIL :

el solo hecho de agregar un archivo llamado hook-PIL.py con un contenido vacío serviría. Encontré un enlace que tenía el contenido de los archivos enganchados de pyinstaller .

La ubicación para crear

para mac: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyInstaller-2.1.1dev_-py2.7.egg/PyInstaller/hooks/ En realidad para mac este paso no ser requerido. Cuando instalamos Python a través de brew y cambiamos la ruta, todo lo que intentes instalar más tarde, ya sea a través de pip install o desde los source packages tiende a elegir una ruta diferente. Y todo será cuidado.

para windows: C:\Python27\lib\site-packages\PyInstaller-2.1.1.dev0-py2.7.egg\PyInstaller\hooks

** Compruebe si esta es una ruta válida en su máquina antes de crear el archivo y luego cree el archivo. Y no estoy seguro o no sé si simplemente agregar un archivo vacío es la forma correcta. Pero funcionó para mí