Python: pas de module nommé datetime?


56

OS: Ubuntu 14.04 LTS

Python: 2.7.6

L’installation de Gourmet Recipe Manager s’est soudainement arrêtée. Lorsque je l'exécute dans une fenêtre de terminal, le message suivant s'affiche à la fin du traceback:

import datetime as dt
ImportError: No module named datetime

Autant que je sache, rien n'a été changé et mon installation de Python est à jour. Il a simplement cessé de fonctionner hier. J'apprécierais certainement une bonne approche pour diagnostiquer et résoudre ce problème!

Mise à jour: merci à tous ceux qui ont répondu!

Tim, je suis désolé si j'ai posé cette question au mauvais endroit. Merci de penser que vous êtes un nouveau type en suivant simplement les liens du site Web Ubuntu.

TheSchwa, j'ai essayé votre suggestion et j'ai reçu le même message d'erreur que ci-dessus.

muru, le paquet semble être installé, mais je n'ai aucune idée s'il est installé / configuré correctement. Comment pourrais-je le savoir?

Je suis désolé pour toutes les questions, mais je suis un vieil homme RedHat qui a été absent de Linux pendant un certain temps. Tous les trucs apt / dpkg sont nouveaux pour moi.


Bien que ce soit (juste) sujet ici, vous pourriez obtenir une meilleure réponse sur Stack Overflow . De plus, je ne peux pas le reproduire. Pas d'erreur du tout, sur le même montage que vous ...
Tim

Qu'advient-il si vous essayez import datetimedans l'interpréteur Python? Vous pouvez démarrer l'interprète en ouvrant un terminal et en l'exécutant python. Vous pouvez le laisser avec Ctrl+d.
TheSchwa

Selon dpkg -S $(python -c "import datetime; print datetime.__file__"), le module datetime est issu du libpython2.7-stdlibpackage. Ce paquet est-il correctement installé? Pouvez-vous essayer de le réinstaller?
muru

Ok, le fichier spécifique est /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.soce que vous avez ce fichier? Aussi voyez-vous la /usr/lib/python2.7/lib-dynloadliste dans la sortie de echo $(python -c "import sys; print sys.path")? En réalité, le système Stack Exchange ne prévient pas les commentateurs lorsque vous modifiez votre message. donc, à tout le moins, postez toujours un commentaire rapide du type "question mise à jour avec l'info", nous recevons donc une notification nous
invitant

Question mise à jour avec l'info. Merci, TheSchwa! Mes réponses sont non et oui, respectivement. Maintenant, où puis-je obtenir une nouvelle copie de datetime.x86_64-linux.gnu.so? :)
Joe

Réponses:


84

Cela m'est arrivé juste après la mise à jour 14.10, et cela semble être dû au fait que mes environnements virtuels en ont d'anciennes copies /usr/bin/python2.7- contrairement au nouveau binaire - n'incluent pas les fonctions datetimeintégrées et entraînent donc une erreur lorsqu'elles ne peuvent pas être localisées sur le disque. . Le nouvel interprète semble l'importer sans aucune entrée / sortie de fichier (essayez de l'exécuter sous stracepour vérifier).

J'ai corrigé chaque environnement virtuel en l'activant et en l'exécutant:

$ cp /usr/bin/python2.7 $(which python2.7)

5
Merci mais pourquoi est-ce nécessaire? Briser le python sur une mise à niveau est une mauvaise chose.
Samantha Atkins le

1
J'ai essayé les autres réponses sur cette page et elles n'ont pas fonctionné, mais celle-ci l'a fait.
Michael Terry

2
Vous avez cp: '/usr/bin/python2.7' and '/usr/bin/python2.7' are the same filemais l'erreur existe toujours
Umair

@Umair Il y a peut-être un problème avec votre activatescript. Dans ce cas, normalement, après l'activation, indique which python2.7le chemin d'accès au fichier Python de l'environnement et ne le renvoie pas au système Python.
Brandon Rhodes

29

Vous pouvez simplement réinitialiser virtualenv en:

cd $VIRTUAL_ENV
virtualenv .

2
Notez que cela devrait être virtualenv .au lieu devirtualenv ,
icyrock.com 12/12/14

4
Cette réponse semble meilleure que celle de Brandon Rhodes.
azurkin

Si on utilise le virtualenvwrapper peut faire cd $VIRTUAL_ENV.
Maciek

OSError: [Errno 1] Operation not permitted
Cerin

@Cerin, j'ai eu le même problème, je viens d'utiliser un sudo virtualenv .pour installer le nouveau fichier exécutable Python, puis j'ai modifié le tout $VIRTUAL_ENVpour revenir au bon propriétaire du répertoire.
iMitwe

29

Si vous rencontrez ce problème en essayant d'utiliser letsencrypt après une mise à niveau, cette solution a fonctionné à mon sens pour les forums de letencrypt - Impossible d'utiliser l'importation automatique: erreur: pas de module nommé io / 2345/3

Il me suffisait de supprimer ceci:

rm ~/.local/share/letsencrypt -R

8
Je devais aussi le rm -rf /opt/eff.orgfaire fonctionner
CharlyDelta

7
suppression de /opt/eff.org corrigée
Margus Pala

1
idem pour moi ... /opt/eff.org
cljk

2

J'ai eu le même problème et j'ai finalement décidé qu'il devait s'agir de l'AWS CLI car j'ai remarqué qu'il avait son propre répertoire python. J'ai donc désinstallé AWS CLI et l'ai réinstallé, ce qui a résolu le problème:

sudo pip uninstall awscli

sudo pip install awscli


0

Comme j'ai trouvé des changements dans 14.04, vous devez le faire à partir de la racine:

Pour la date et l'heure uniquement:


ln -s /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/datetime.so

Pour tous les modules:


ln -s /usr/lib/python2.7/lib-dynload/audioop.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/audioop.so
ln -s /usr/lib/python2.7/lib-dynload/_bsddb.x86_64-linux-gnu.so                        /usr/lib/python2.7/lib-dynload/_bsddb.so
ln -s /usr/lib/python2.7/lib-dynload/bz2.x86_64-linux-gnu.so                           /usr/lib/python2.7/lib-dynload/bz2.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_cn.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_cn.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_hk.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_hk.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_iso2022.x86_64-linux-gnu.so               /usr/lib/python2.7/lib-dynload/_codecs_iso2022.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_jp.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_jp.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_kr.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_kr.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_tw.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_tw.so
ln -s /usr/lib/python2.7/lib-dynload/crypt.x86_64-linux-gnu.so                         /usr/lib/python2.7/lib-dynload/crypt.so
ln -s /usr/lib/python2.7/lib-dynload/_csv.x86_64-linux-gnu.so                          /usr/lib/python2.7/lib-dynload/_csv.so
ln -s /usr/lib/python2.7/lib-dynload/_ctypes_test.x86_64-linux-gnu.so                  /usr/lib/python2.7/lib-dynload/_ctypes_test.so
ln -s /usr/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/_ctypes.so
ln -s /usr/lib/python2.7/lib-dynload/_curses_panel.x86_64-linux-gnu.so                 /usr/lib/python2.7/lib-dynload/_curses_panel.so
ln -s /usr/lib/python2.7/lib-dynload/_curses.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/_curses.so
ln -s /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/datetime.so
ln -s /usr/lib/python2.7/lib-dynload/dbm.x86_64-linux-gnu.so                           /usr/lib/python2.7/lib-dynload/dbm.so
ln -s /usr/lib/python2.7/lib-dynload/_elementtree.x86_64-linux-gnu.so                  /usr/lib/python2.7/lib-dynload/_elementtree.so
ln -s /usr/lib/python2.7/lib-dynload/fpectl.x86_64-linux-gnu.so                        /usr/lib/python2.7/lib-dynload/fpectl.so
ln -s /usr/lib/python2.7/lib-dynload/future_builtins.x86_64-linux-gnu.so               /usr/lib/python2.7/lib-dynload/future_builtins.so
ln -s /usr/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/_hashlib.so
ln -s /usr/lib/python2.7/lib-dynload/_hotshot.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/_hotshot.so
ln -s /usr/lib/python2.7/lib-dynload/_json.x86_64-linux-gnu.so                         /usr/lib/python2.7/lib-dynload/_json.so
ln -s /usr/lib/python2.7/lib-dynload/linuxaudiodev.x86_64-linux-gnu.so                 /usr/lib/python2.7/lib-dynload/linuxaudiodev.so
ln -s /usr/lib/python2.7/lib-dynload/_lsprof.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/_lsprof.so
ln -s /usr/lib/python2.7/lib-dynload/mmap.x86_64-linux-gnu.so                          /usr/lib/python2.7/lib-dynload/mmap.so
ln -s /usr/lib/python2.7/lib-dynload/_multibytecodec.x86_64-linux-gnu.so               /usr/lib/python2.7/lib-dynload/_multibytecodec.so
ln -s /usr/lib/python2.7/lib-dynload/_multiprocessing.x86_64-linux-gnu.so              /usr/lib/python2.7/lib-dynload/_multiprocessing.so
ln -s /usr/lib/python2.7/lib-dynload/nis.x86_64-linux-gnu.so                           /usr/lib/python2.7/lib-dynload/nis.so
ln -s /usr/lib/python2.7/lib-dynload/ossaudiodev.x86_64-linux-gnu.so                   /usr/lib/python2.7/lib-dynload/ossaudiodev.so
ln -s /usr/lib/python2.7/lib-dynload/parser.x86_64-linux-gnu.so                        /usr/lib/python2.7/lib-dynload/parser.so
ln -s /usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/pyexpat.so
ln -s /usr/lib/python2.7/lib-dynload/readline.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/readline.so
ln -s /usr/lib/python2.7/lib-dynload/resource.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/resource.so
ln -s /usr/lib/python2.7/lib-dynload/_sqlite3.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/_sqlite3.so
ln -s /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so                          /usr/lib/python2.7/lib-dynload/_ssl.so
ln -s /usr/lib/python2.7/lib-dynload/termios.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/termios.so
ln -s /usr/lib/python2.7/lib-dynload/_testcapi.x86_64-linux-gnu.so                     /usr/lib/python2.7/lib-dynload/_testcapi.so

Aussi, si vous utilisez env env virtuel

cp $(which python2.7) /opt/graphite/bin/python

à votre env.


3
Je suis passé à 14.04 et je n'ai pas eu besoin de faire de lien symbolique. Pourriez-vous fournir la preuve qu'il est nécessaire et impossible d'éviter les bibliothèques système telles que celle-ci?
Andrea Lazzarotto

0

J'ai eu l'erreur quand j'ai mis à jour d'Ubuntu 14.04 à 14.10. J'ai recréé mon virtualenv et le problème est parti. Donc, si vous travaillez avec virtualenv, vous devriez le recréer.

Cependant, si vous ne le faites pas, je suppose que la réinstallation de votre projet fonctionnera. Ne touchez aucune bibliothèque système! Cela peut fonctionner pour le moment, mais peut éventuellement entraîner des problèmes avec d'autres.


0

Cela se produit après certaines mises à niveau Ubuntu. Ma solution préférée est

$ virtualenv --no-site-packages path/to/virtualenv/dir

Ceci met à jour tout le nécessaire sans supprimer les paquetages déjà installés.

Si vous avez plusieurs virtualenvs à mettre à jour, vous pouvez utiliser xargs:

$ ls ~/directory/with/virtualenvs | xargs -L1 virtualenv --no-site-packages
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.