update parser dateutil python install yum python-dateutil

parser - six python install



Python no puede encontrar dateutil.relativedelta (4)

Este es un hilo bastante antiguo, así que ponerlo solo para la posteridad (el comentario anterior sobre la instalación de python-dateutil me ayudó, así que tal vez mi comentario ayude a alguien más).

Para aquellos en Mac OS (Snow Leopard, no estoy seguro acerca de otras versiones), el paquete dateutils se encuentra por defecto en:

/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/dateutil

mientras que pip install escribe el paquete en:

/Library/Python/2.6/site-packages

y no actualiza el archivo /Library/Python/2.6/site-packages/easy-install.pth. Como resultado, cuando importe dateutil, seguirá apuntando a la ubicación anterior, puede verificar esto mediante " import dateutil; dateutil.__file__ ".

Entonces, lo que hice (probablemente hay mejores métodos disponibles) fue cambiar el nombre del directorio antiguo ( /System/Library/.../dateutil ) a dateutil.obsolete y reiniciar python, y luego ejecutar el mismo conjunto de comandos nuevamente. Esto no hace nada con el archivo de ruta o sys.path , pero omite el paquete dateutils anterior para que pueda acceder al nuevo.

Estoy intentando ejecutar un programa utilizando el paster serve pero sigo recibiendo el error:

ImportError: No module named dateutil.relativedelta

Estoy ejecutando python versión 2.6.7 y dateutil versión 1.5, por lo que debería estar instalado.

¿Alguien tiene alguna idea de por qué sucedería esto?

Estoy importando usando

from dateutil.relativedelta import *

Incluso puedo ver el paquete cuando busco:

/usr/lib/python2.7/site-packages/dateutil/relativedelta.pyc /usr/lib/python2.7/site-packages/dateutil/relativedelta.py /usr/lib/python2.7/site-packages/dateutil/relativedelta.pyo

ACTUALIZAR

Así que esta publicación tiene ya unos meses y me ganó la insignia de la Pregunta Popular, pensé que valdría la pena echarle un vistazo y ver si podía dar una buena respuesta a esta pregunta con un poco más de experiencia respaldándome.

Inmediatamente miro esto y veo que dateutil solo está instalado para python2.7 y apuesto a que lo que estaba haciendo era esto:

sudo yum install python-dateutil

A qué sudo habría cambiado a la versión predeterminada de Python (es decir, Python2.7 en lugar de 2.6.4)

Resolver esto hubiera sido tan simple como:

su (switch to virtual environment) yum install python-dateutil

Usar su y luego cambiar al entorno virtual le dará acceso de root e instalará en el directorio virtual de python. El uso de sudo instalará bibliotecas en el directorio predeterminado, no en los paquetes de sitio de entornos virtuales.


Esto me parece un problema de instalación del paquete. Lista de solución de problemas que viene a mi mente:

  1. Verifique que haya instalado el paquete.
  2. Si está instalado, verifique que los archivos se hayan almacenado en el directorio correcto (un directorio accesible desde su intérprete de python (= en PYTHONPATH, artículo útil here ).
  3. Verifique el permiso en esos archivos.
  4. Reinicie su shell si ha intentado la importación allí.
  5. Reinicie su computadora (ouch ... son 10 años que uso GNU / Linux, pero todavía sufro de los malos recuerdos de Windows!

HTH (al menos un poco!).


También me encontré con este problema, la solución simple que terminé usando era agregar --upgrade al final del comando. Esto lo obligó a instalarlo, aunque Python pensó que estaba instalado. Esto resolvió el problema.

Entonces, si tiene este problema, intente lo siguiente:

sudo pip install python-dateutil --upgrade

Es posible que no pueda dañar nada, por lo que no hay daño en forzarlo para que se vuelva a instalar.


Tuve un problema similar, pero por una razón más simple. Mi nuevo virtualenv simplemente no tenía dateutil instalado y no sabía el nombre del paquete Python. pip install dateutil , que obviamente no funcionó ya que el nombre del paquete era incorrecto. La ejecución de pip install python-dateutil funcionó en pip install python-dateutil lugar (sin tener que recurrir a sudo ).