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