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).