En las versiones 2.2 y 2.3 de Microsoft Cognitive Toolkit es común que aparezca un error al ejecutar “import matplotlib”. Ya sea que estemos usando Jupyter Notebooks o el entorno de Python de Anaconda3 el error impide realizar gráficos utilizando la librería matplotlib. Este error no se produce si utilizamos la versión 2.4 de Microsoft Cognitive Toolkit.

ErrorAlHacerImportMatPlot
El problema en los tutoriales del Microsoft Cognitive Toolkit
En los tutoriales que están disponibles con el producto podemos encontrar la siguiente nota donde sugiere ejecutar un comando de instalación de la librería matplotlib para solucionar un problema de dependencias con la versión de pyplot. Este comando no soluciona el problema habitual relacionado con el módulo “ft2font” que genera el error al hacer “import matplotlib”.
If the import of `matplotlib.pyplot` fails, please run `conda install matplotlib`, which will fix the `pyplot` version dependencies. If you are on a python environment different from Anaconda, then use `pip install matplotlib`.
El error al ejecutar “import matplotlib”
A continuación se puede ver el error al ejecutar import matplotlib dentro de un entorno de Jupyter notebook:
>>> import matplotlib >>> import matplotlib.pyplot as plt Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\Charles\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 32, in Aa la<module> import matplotlib.colorbar File "C:\Users\Charles\Anaconda3\lib\site-packages\matplotlib\colorbar.py", line 36, in <module> import matplotlib.contour as contour File "C:\Users\Charles\Anaconda3\lib\site-packages\matplotlib\contour.py", line 21, in <module> import matplotlib.font_manager as font_manager File "C:\Users\Charles\Anaconda3\lib\site-packages\matplotlib\font_manager.py", line 58, in <module> from matplotlib import afm, cbook, ft2font, rcParams, get_cachedir ImportError: DLL load failed: The specified procedure could not be found.
Como puede verse en el mensaje de error el problema es que no encuentra la versión adecuada de una de las librerias. Habitualmente este error está relacionado con “ft2font”.
Si bien existen distintos orígenes para este problema, la instalación de versiones anteriores a la Microsoft Cognitive Toolkit 2.4 dentro del entorno con las ultimas versiones de Anaconda3 tiene un problema con la dll “zlib.dll”. Al realizar la instalación del CNTK dentro de Python agrega esta dll a la raíz del entorno de Anaconda3. Esto provoca una serie de inconvenientes que se encuentran documentados en los foros de discusión de CNTK.
https://github.com/Microsoft/CNTK/issues/2654
https://github.com/Microsoft/CNTK/issues/2423
Alternativas de solución
Dependiendo del problema en sí, en los foros se pueden encontrar distintas alternativas para actualizar la instalación y resolver el problema como pueden ser:
- Actualizar mediante el comando Conda la versión de Anaconda3 ya sea utilizando la actualización forzada o una actualización normal.
- Actualizar mediante el comando Conda la librería matplotlib (forzada o normal).
- Actualizar mediante el comando pip la librería matplotlib.
- Renombrar el archivo zlib.dll causante del problema.
- Copiar o renombrar algunas dll dentro de las carpetas de Windows.
- Desinstalar y volver a instalar la librería matplotlib.
- Forzar la instalación o la actualización de algunas librerías relacionadas.
Se debe tener en cuenta que al ejecutar algunos comandos como los que acabo de mencionar, en ocasiones la solución funciona durante un tiempo pero luego cuando se realiza algún tipo de actualización comienzan a surgir nuevos inconvenientes. El problema más habitual que ocurre cuando forzamos una actualización es que quedan versiones incompatibles con el resto de los componentes de Anaconda3.
Por lo tanto la manera más limpia para resolver este problema es la siguiente:
- Desinstalar Anaconda3 utilizando la opción de agregar o quitar programas que se encuentra disponible en el panel de control.
- (Opcional) En mi caso no fue necesario reiniciar el equipo dado que ninguna de las dll causantes de los problemas o las que componen Anaconda3 estaban en memoria al momento de hacer la desinstalación. Sin embargo no es una mala idea hacer un reinicio “sanitario”.
- Instalar nuevamente Anaconda3 tal como lo sugiere la publicación que realice y que pueden encontrar en el siguiente link:
Cómo instalar Microsoft Cognitive Toolkit en Windows
Una vez que tenemos el entorno de Anaconda3 reinstalado, es conveniente verificar que se puede importar la librería matplotlib sin inconvenientes. Para ello alcanza con verificar que no se produce error al ejecutar “import matplotlib”. Esta prueba nos permitirá descartar que el problema no está relacionado con alguna versión desactualizada de las dll utilizadas por esta librería que podrían estar disponibles en el equipo, por ejemplo instalada por otro producto en alguna carpeta de la instalación de WINDOWS. Esta situación, por ejemplo, podría estar originada porque esta dll desactualizada se carga en memoria antes que la dll disponible en Anaconda3.
Si podemos importar matplotlib correctamente, entonces nuestro entorno de Anaconda3 dentro de Windows funciona correctamente para esta librería, y podemos reinstalar el Microsoft Cognitive Toolkit mediante el comando pip tal como se encuentra explicado en el link precedente. Una vez realizada la instalación del Microsoft Cognitive Toolkit debemos volver a probar que todo funciona correctamente y que la instalación del Microsoft CNTK no genera este problema.
0 Comentarios