Python: Kein Modul namens datetime?


56

Betriebssystem: Ubuntu 14.04 LTS

Python: 2.7.6

Meine Installation von Gourmet Recipe Manager wurde plötzlich nicht mehr geladen. Wenn ich es in einem Terminalfenster ausführe, erhalte ich am Ende des Tracebacks Folgendes:

import datetime as dt
ImportError: No module named datetime

Soweit ich das beurteilen kann, wurde nichts geändert und meine Python-Installation ist auf dem neuesten Stand. Es hat gestern einfach aufgehört zu arbeiten. Ich würde mich auf jeden Fall über einen guten Ansatz zur Diagnose und Behebung dieses Problems freuen!

Update: Danke an alle, die geantwortet haben!

Tim, es tut mir leid, wenn ich diese Frage an der falschen Stelle gestellt habe. Bitte verstehe es als neuer Typ, indem du einfach den Links auf der Ubuntu-Website folgst.

TheSchwa, ich habe Ihren Vorschlag ausprobiert und die gleiche Fehlermeldung wie oben erhalten.

muru, das paket scheint installiert zu sein, aber ich habe keine ahnung, ob es richtig installiert / konfiguriert ist. Wie könnte ich es herausfinden?

Es tut mir leid für all die Fragen, aber ich bin ein alter RedHat-Typ, der seit einiger Zeit nicht mehr unter Linux arbeitet. Das ganze apt / dpkg-Zeug ist neu für mich.


Obwohl dies hier (nur) ein Thema ist, erhalten Sie möglicherweise eine bessere Antwort auf den Stapelüberlauf . Ich kann es auch nicht reproduzieren. Keine Fehler, im selben Setup wie Sie ...
Tim

Was passiert, wenn Sie es import datetimeim Python-Interpreter versuchen ? Sie können den Interpreter starten, indem Sie ein Terminal öffnen und ausführen python. Sie können es mit verlassen Ctrl+d.
TheSchwa

Das dpkg -S $(python -c "import datetime; print datetime.__file__")datetime-Modul stammt demnach aus dem libpython2.7-stdlibPaket. Ist das Paket richtig installiert? Können Sie versuchen, es erneut zu installieren?
muru

Okay, die spezifische Datei ist, /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.sohaben Sie diese Datei? Siehst du /usr/lib/python2.7/lib-dynloaddas auch in der Ausgabe von aufgelistet echo $(python -c "import sys; print sys.path")? Übrigens benachrichtigt das Stack Exchange-System Kommentatoren nicht, wenn Sie Ihren Beitrag bearbeiten.
Schreiben Sie also

Aktualisierte Frage mit der Info. Danke, TheSchwa! Meine Antworten sind nein bzw. ja. Wo kann ich jetzt eine neue Kopie von datetime.x86_64-linux.gnu.so bekommen? :)
Joe

Antworten:


84

Dies ist mir erst nach dem 14.10-Update passiert, und es scheint so, als /usr/bin/python2.7ob meine virtuellen Umgebungen alte Kopien davon - anders als die neue Binärdatei - nicht enthalten datetimeund daher eine Fehlermeldung erhalten, wenn sie sie nirgendwo auf der Festplatte finden können . Der neue Interpreter scheint es ohne Datei-E / A zu importieren (versuchen Sie, es unter auszuführen, um dies stracezu überprüfen).

Ich habe jede virtuelle Umgebung repariert, indem ich sie aktiviert und ausgeführt habe:

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

5
Danke, aber warum ist das notwendig? Das Brechen von Python bei einem Upgrade ist unangenehm.
Samantha Atkins

1
Ich habe die anderen Antworten auf dieser Seite ausprobiert und sie haben nicht funktioniert, aber diese hat funktioniert.
Michael Terry

2
Habe cp: '/usr/bin/python2.7' and '/usr/bin/python2.7' are the same fileaber der Fehler ist immer noch vorhanden
Umair

@Umair activateIn diesem Fall liegt möglicherweise ein Problem mit Ihrem Skript vor. Normalerweise wird nach der Aktivierung which python2.7der Pfad zum Python der Umgebung angezeigt und nicht der Pfad zum System-Python zurückgegeben.
Brandon Rhodes

29

Sie können die virtuelle Umgebung einfach neu initialisieren, indem Sie:

cd $VIRTUAL_ENV
virtualenv .

2
Beachten Sie, dass es virtualenv .stattdessen sein solltevirtualenv ,
icyrock.com

4
Diese Antwort scheint besser zu sein als die von Brandon Rhodes.
Azurkin

Wenn man den virtualenvwrapper benutzt kann man das tun cd $VIRTUAL_ENV.
Maciek

OSError: [Errno 1] Operation not permitted
Cerin

@Cerin, ich hatte das gleiche Problem, ich habe gerade eine verwendet sudo virtualenv ., um die neue ausführbare Python-Datei zu installieren, und dann das Ganze wieder $VIRTUAL_ENVin den richtigen Verzeichnis-Besitzer geändert .
iMitwe


2

Ich hatte das gleiche Problem und entschied schließlich, dass es sich um die AWS-CLI handeln muss, da mir aufgefallen ist, dass sie ein eigenes Python-Verzeichnis hat. Also habe ich AWS CLI deinstalliert und neu installiert und das hat das Problem behoben:

sudo pip uninstall awscli

sudo pip install awscli


0

Da ich in 14.04 einige Änderungen gefunden habe, müssen Sie dies von root aus tun:

Nur für die Datumszeit:


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

Für alle Module:


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

Auch wenn Sie eine virtuelle Env-Kopie verwenden

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

zu Ihrer Umgebung


3
Ich habe ein Upgrade auf 14.04 durchgeführt und brauchte keinen Symlink. Können Sie nachweisen, dass es notwendig und unvermeidlich ist, die Systembibliotheken auf diese Weise durcheinander zu bringen?
Andrea Lazzarotto

0

Ich habe den Fehler beim Upgrade von Ubuntu 14.04 auf 14.10 erhalten. Ich habe mein Virtualenv neu erstellt und das Problem ist verschwunden. Wenn Sie also mit einem virtuellen Gerät arbeiten, sollten Sie es neu erstellen.

Wenn Sie dies nicht tun, funktioniert die Neuinstallation Ihres Projekts wahrscheinlich. Berühren Sie keine Systembibliotheken! Es kann vorerst funktionieren, wird aber möglicherweise zu Problemen mit anderen führen.


0

Dies geschieht nach einigen Ubuntu-Upgrades. Meine Lieblingslösung ist

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

Dies aktualisiert alles, was benötigt wird, ohne die bereits installierten Pakete zu entfernen.

Wenn Sie viele virtuelle Umgebungen aktualisieren müssen, können Sie Folgendes verwenden xargs:

$ ls ~/directory/with/virtualenvs | xargs -L1 virtualenv --no-site-packages
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.