Python: nessun modulo chiamato datetime?

51

OS: Ubuntu 14.04 LTS

Python: 2.7.6

La mia installazione di Gourmet Recipe Manager ha improvvisamente interrotto il caricamento. Quando lo eseguo in una finestra di terminale, ottengo quanto segue alla fine del traceback:

import datetime as dt
ImportError: No module named datetime

Per quanto posso dire, nulla è stato cambiato e la mia installazione Python è aggiornata. Ha semplicemente smesso di funzionare ieri. Sicuramente apprezzerei un buon approccio per diagnosticare e risolvere questo problema!

Aggiornamento: grazie a tutti quelli che hanno risposto!

Tim, mi dispiace se ho fatto questa domanda nel posto sbagliato. Per favore fallo per diventare un nuovo ragazzo semplicemente seguendo i link dal sito web di Ubuntu.

TheSchwa, ho provato il tuo suggerimento e ho ricevuto lo stesso messaggio di errore come sopra.

muru, sembra che il pacchetto sia installato, ma non ho idea se sia installato / configurato correttamente. Come potrei scoprirlo?

Mi dispiace per tutte le domande, ma sono un vecchio RedHat che è stato lontano da Linux per qualche tempo. Tutta la roba di apt / dpkg è nuova per me.

    
posta Joe 10.08.2014 - 08:51

7 risposte

78

Questo mi è appena successo dopo l'aggiornamento 14.10, e sembra essere dovuto al fatto che i miei ambienti virtuali hanno vecchie copie di /usr/bin/python2.7 che - a differenza del nuovo binario - non includono datetime built-in, quindi ottieni un errore quando non riescono a trovarlo su disco ovunque. Il nuovo interprete sembra importarlo senza alcun I / O di file (prova a eseguirlo sotto strace per controllare).

Ho corretto ogni ambiente virtuale attivandolo ed eseguendo:

$ cp /usr/bin/python2.7 $(which python2.7)
    
risposta data Brandon Rhodes 28.10.2014 - 11:54
28

Se stai cercando di utilizzare LetCrypt dopo un aggiornamento, questa soluzione ha funzionato per me letsencrypt forums - Impossibile usare l'importazione automatica: errore: nessun modulo chiamato io / 2345/3

Ho appena dovuto eliminare questo:

rm ~/.local/share/letsencrypt -R
    
risposta data Cody Moniz 18.11.2016 - 01:39
26

Puoi semplicemente reinizializzare la virtualenv di:

cd $VIRTUAL_ENV
virtualenv .
    
risposta data sureshvv 03.12.2014 - 06:54
2

Ho avuto lo stesso problema e alla fine ho deciso che doveva essere la CLI di AWS perché ho notato che aveva la sua directory python. Così ho disinstallato AWS CLI e reinstallato e questo ha risolto il problema:

sudo pip uninstall awscli

sudo pip install awscli

    
risposta data JBaczuk 14.12.2016 - 00:04
0

Come ho trovato alcune modifiche in 14.04 quindi è necessario farlo da root:

Solo per data / ora:


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

Per tutti i moduli:


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

Inoltre, se si utilizza la copia env virtuale

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

alla tua env.

    
risposta data Ilya Shevyrev 11.09.2014 - 20:14
0

Ho ricevuto l'errore quando sono passato da Ubuntu 14.04 a 14.10. Ho ricreato il mio virtualenv e il problema è andato via. Quindi, se stai lavorando con un virtualenv, dovresti ricrearlo.

Tuttavia, se non lo fai, suppongo che la reinstallazione del tuo progetto funzionerà. Non toccare nessuna libreria di sistema! Può funzionare per il momento, ma potenzialmente porterà a problemi con gli altri.

    
risposta data Doomsday 16.11.2014 - 11:06
0

Questo succede dopo alcuni aggiornamenti di Ubuntu. La mia soluzione preferita è

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

Questo aggiorna tutto il necessario senza rimuovere i pacchetti già installati.

Se disponi di molti virtualenv da aggiornare, puoi utilizzare xargs :

$ ls ~/directory/with/virtualenvs | xargs -L1 virtualenv --no-site-packages
    
risposta data brandizzi 21.10.2016 - 11:43

Leggi altre domande sui tag