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.
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.
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
).
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:
- Compruebe que ha instalado el paquete.
- 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í).
- Verifique el permiso en esos archivos.
- Reinicie su shell si ha intentado la importación allí.
- 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!).
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.
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