SO: Ubuntu 14.04 LTS
Python: 2.7.6
Mi instalación de Gourmet Recipe Manager de repente dejó de cargarse. Cuando lo ejecuto en una ventana de terminal, obtengo lo siguiente al final del rastreo:
import datetime as dt
ImportError: No module named datetime
Hasta donde puedo decir, nada ha cambiado y mi instalación de Python está actualizada. Simplemente dejó de funcionar ayer. ¡Sin duda agradecería un buen enfoque para diagnosticar y solucionar este problema!
Actualización: gracias a todos los que respondieron!
Tim, lo siento si hice esta pregunta en el lugar equivocado. Tíralo como un chico nuevo simplemente siguiendo los enlaces del sitio web de Ubuntu.
TheSchwa, probé tu sugerencia y recibí el mismo mensaje de error que el anterior.
muru, el paquete parece estar instalado, pero no tengo idea si está instalado / configurado correctamente. ¿Cómo podría averiguarlo?
Lamento todas las preguntas, pero soy un viejo tipo de RedHat que ha estado alejado de Linux por algún tiempo. Todas las cosas de apt / dpkg son nuevas para mí.
import datetime
en el intérprete de Python? Puede iniciar el intérprete abriendo un terminal y ejecutándolopython
. Puedes dejarlo conCtrl+d
.dpkg -S $(python -c "import datetime; print datetime.__file__")
, el módulo de fecha y hora es dellibpython2.7-stdlib
paquete. ¿Está ese paquete instalado correctamente? ¿Puedes intentar reinstalarlo?/usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.so
¿tienes ese archivo? ¿También ves/usr/lib/python2.7/lib-dynload
listado en la salida deecho $(python -c "import sys; print sys.path")
? Por cierto, el sistema Stack Exchange no notifica a los comentaristas cuando editas tu publicación; así que al menos siempre publique un comentario rápido como "Pregunta actualizada con la información" para que recibamos una notificación que nos diga queRespuestas:
Esto me sucedió después de la actualización 14.10, y parece ser porque mis entornos virtuales tienen copias antiguas de
/usr/bin/python2.7
eso, a diferencia del nuevo binario, no incluyendatetime
incorporado, por lo que recibo un error cuando no pueden encontrarlo en el disco en ninguna parte . El nuevo intérprete parece importarlo sin ninguna E / S de archivo (intente ejecutarlostrace
para verificar).Arreglé cada entorno virtual activándolo y ejecutando:
fuente
cp: '/usr/bin/python2.7' and '/usr/bin/python2.7' are the same file
, pero todavía existe el erroractivate
script, en ese caso, normalmente, después de la activación,which python2.7
mostrará la ruta al Python del entorno, no devolverá la ruta al Python del sistema.Puede reiniciar el virtualenv de la siguiente manera:
fuente
virtualenv .
lugar devirtualenv ,
cd $VIRTUAL_ENV
.OSError: [Errno 1] Operation not permitted
sudo virtualenv .
para instalar el nuevo ejecutable de Python y luego volví a cambiar todo$VIRTUAL_ENV
al propietario del directorio correcto.Si está tratando de usar letsencrypt después de una actualización, esta solución funcionó para mí foros de letsencrypt - No se puede usar la importación automática: error: ningún módulo llamado io / 2345/3
Solo tuve que eliminar esto:
fuente
rm -rf /opt/eff.org
hacerlo funcionarTuve el mismo problema y finalmente decidí que debía ser la AWS CLI porque noté que tenía su propio directorio de Python. Así que desinstalé AWS CLI y lo reinstalé y eso solucionó el problema:
sudo pip uninstall awscli
sudo pip install awscli
fuente
Como encontré algunos cambios en 14.04, debes hacer esto desde la raíz:
Solo para fecha y hora:
Para todos los módulos:
Además, si usa copia virtual env
a tu env
fuente
Recibí el error cuando actualicé de Ubuntu 14.04 a 14.10. Recreé mi virtualenv y el problema desapareció. Entonces, si está trabajando con un virtualenv, debe recrearlo.
Sin embargo, si no lo hace, supongo que reinstalar su proyecto funcionará. ¡No toques ninguna biblioteca del sistema! Puede funcionar por el momento, pero potencialmente generará problemas con otros.
fuente
Esto sucede después de algunas actualizaciones de Ubuntu. Mi solucion favorita es
Esto actualiza todo lo necesario sin eliminar los paquetes ya instalados.
Si tiene muchos virtualenvs para actualizar, puede usar
xargs
:fuente