Python no puede encontrar dateutil.relativedelta


Estoy tratando de ejecutar un programa usando 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

ACTUALIZACIÓN

Así que este post es ahora unos meses de edad y me acaba de ganar la insignia de la Pregunta Popular, pensé podría valer la pena echar un vistazo y ver si podrí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 la que sudo tendría que cambiar a la versión predeterminada de Python (es decir, Python2.7 en lugar de 2.6.4)

Resolver esto habría sido tan simple como:

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

Utilizando su y luego cambiar a el entorno virtual dará acceso root e instalará el directorio virtual python. Usando sudo instalará bibliotecas en el directorio predeterminado, no en los entornos virtuales site-packages.

Author: Rick Hoving, 2011-12-07

4 answers

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

Así que si tiene este problema, intente lo siguiente:

sudo pip install python-dateutil --upgrade

No puede dañar nada, por lo que no hay ningún daño en solo forzar que se reinstale.

 51
Author: Jon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-01 14:05:56

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. Probé pip install dateutil, que obviamente no funcionó ya que el nombre del paquete era incorrecto. Ejecutar pip install python-dateutil funcionó (sin recurrir a sudo).

 3
Author: d3vid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-04 08:23:11

Esto me parece un problema de instalación de paquetes. Lista de solución de problemas que me viene a la mente:

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

HTH (al menos un poco!).

 1
Author: mac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-07 16:25:33

Este es un hilo bastante antiguo, por lo 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 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 a:

/Library/Python/2.6/site-packages

Y no actualiza /Library/Python/2.6/site-packages/easy-install.archivo pth. Como resultado, cuando usted importar dateutil, todavía apuntará a la ubicación anterior, puede verificar esto por " import dateutil; dateutil.__file__".

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

 1
Author: Sujit Pal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-05 03:44:32