python3 pyplot mac instalar python macos python-2.7 matplotlib python-dateutil

pyplot - install matplotlib python3 ubuntu



Problema de Matplotlib en OS X("ImportError: no se puede importar el nombre_thread") (4)

En algún momento de los últimos días, Matplotlib dejó de funcionar para mí en OS X. Aquí está el error que obtengo al intentar import matplotlib :

Traceback (most recent call last): File "/my/path/to/script/my_script.py", line 15, in <module> import matplotlib.pyplot as plt File "/Library/Python/2.7/site-packages/matplotlib/pyplot.py", line 34, in <module> from matplotlib.figure import Figure, figaspect File "/Library/Python/2.7/site-packages/matplotlib/figure.py", line 40, in <module> from matplotlib.axes import Axes, SubplotBase, subplot_class_factory File "/Library/Python/2.7/site-packages/matplotlib/axes/__init__.py", line 4, in <module> from ._subplots import * File "/Library/Python/2.7/site-packages/matplotlib/axes/_subplots.py", line 10, in <module> from matplotlib.axes._axes import Axes File "/Library/Python/2.7/site-packages/matplotlib/axes/_axes.py", line 22, in <module> import matplotlib.dates as _ # <-registers a date unit converter File "/Library/Python/2.7/site-packages/matplotlib/dates.py", line 126, in <module> from dateutil.rrule import (rrule, MO, TU, WE, TH, FR, SA, SU, YEARLY, File "/Library/Python/2.7/site-packages/dateutil/rrule.py", line 14, in <module> from six.moves import _thread ImportError: cannot import name _thread

El único cambio de sistema que se me ocurrió fue la actualización NTP forzada por Apple y tal vez algunos cambios de permisos que hice en / usr / local para que Brew volviera a funcionar.

Intenté reinstalar Matplotlib y Python-dateutil a través de Pip, pero esto no ayudó. También probé un reinicio. Estoy ejecutando Python 2.7.6, que se encuentra en / usr / bin / python. Estoy ejecutando Yosemite (OS X 10.10.1).


Es posible que tenga una versión perfectamente instalada de cualquier paquete que haya instalado, pero la versión utilizada de forma predeterminada no es la que desea. Puede ver la lista de rutas desde las que busca Python para encontrar sus paquetes de la siguiente manera:

>>> import sys >>> sys.path

Para permitir que Python busque primero la versión más actualizada de cierto paquete, en lugar de eliminar la versión del sistema, lo que se puede hacer es configurar la variable de sistema PYTHONPATH en el archivo de configuración ~ / .bash_profile (o ~ / .bashrc si linux) a la ruta donde se instalan los nuevos paquetes:

export PYTHONPATH=/Library/Python/2.7/site-packages

Una alternativa es modificar la ruta de Python dentro de su script de Python agregando la ruta al comienzo de la lista de rutas:

import sys sys.path.insert(1,''/Library/Python/2.7/site-packages'')

Esto debe hacerse para cada script que necesite una determinada versión del paquete. Es posible que, por algún motivo, desee utilizar una versión anterior que haya instalado. Por cierto, todas mis instalaciones con easy_install, o pip, o desde las fuentes van a /Library/Python/2.7/site-packages Esto funcionó en EL Capitan, y ahora también en macOS Sierra (10.12.2)


Este problema se soluciona en las últimas six versiones y dateutil . Sin embargo, en OS X, incluso si actualiza sus six a la última versión, es posible que no lo actualice correctamente. Esto es lo que me pasó a mí:

Después de hacer una pip2 install six -U , el nuevo módulo six se instaló en /Library/Python/2.7/site-packages/ . Sin embargo, cuando cargué six en un terminal Python 2.7 y verifiqué su ruta, esto es lo que obtuve:

import six print six.__file__ /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.pyc

Entonces, Python estaba usando una versión anterior de six , que eliminé escribiendo:

rm -rf /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.*

Esto solucionó este problema para mí.


Instalar python-dateutil==2.2 no funcionó para mí.

¡Pero una solución rápida y sucia funcionó! Reemplazo six.py en python 2.7 con el six.py de python 3.4 (virtualenv). Desde entonces, tengo el problema en 2.7 pero no 3.4.

ACTUALIZAR

Tuve el mismo problema nuevamente después de reinstalar Python (y después de actualizar a El Capitan). Lo que no es obvio es que este error ocurre solo en el shell y el cuaderno de IPython (cuando import matplotlib.pyplot as plt ) pero funciona bien desde un shell de Python.

Entonces, una mejor solución (que funcionó en mi caso) sin una solución sucia es forzar la instalación de six e ipython . Esto es lo que hice para arreglar esto:

$ pip install --ignore-installed six $ pip install --ignore-installed ipython


sudo pip uninstall python-dateutil sudo pip install python-dateutil==2.2

También tuve el mismo mensaje de error esta tarde, aunque recientemente me actualicé a Yosemite. No estoy totalmente seguro de entender por qué revertir dateutil a una versión anterior me funciona, pero desde que ejecuté lo anterior no tengo problemas (generalmente uso pyplot en línea en un cuaderno de ipython).