Python: nessun modulo chiamato datetime?


56

Sistema operativo: 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 ne so, nulla è stato modificato e la mia installazione di Python è aggiornata. Ha semplicemente smesso di funzionare ieri. Gradirei sicuramente un buon approccio per diagnosticare e risolvere questo problema!

Aggiornamento: grazie a tutti coloro che hanno risposto!

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

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

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

Mi dispiace per tutte le domande, ma sono un vecchio RedHat che è stato via da Linux per un po 'di tempo. Tutte le cose apt / dpkg sono nuove per me.


Mentre questo è (solo) in argomento qui, potresti ottenere una risposta migliore su StackTranslate.it . Inoltre, non riesco a riprodurlo. Nessun errore, sullo stesso set-up del tuo ...
Tim

Cosa succede se provi import datetimenell'interprete Python? È possibile avviare l'interprete aprendo un terminale ed eseguendolo python. Puoi lasciarlo con Ctrl+d.
Schwa,

Secondo dpkg -S $(python -c "import datetime; print datetime.__file__"), il modulo datetime proviene dal libpython2.7-stdlibpacchetto. Quel pacchetto è installato correttamente? Puoi provare a reinstallarlo?
Muru,

Va bene, quindi il file specifico è /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.sohai quel file? Vedi anche /usr/lib/python2.7/lib-dynloadelencato nell'output di echo $(python -c "import sys; print sys.path")? A proposito, il sistema Stack Exchange non notifica effettivamente i commentatori quando modifichi il tuo post; quindi almeno pubblica sempre un breve commento come "Domanda aggiornata con le informazioni", quindi riceviamo una notifica che ci dice di controllare di nuovo :)
TheSchwa

Domanda aggiornata con le informazioni. Grazie, TheSchwa! Le mie risposte sono no e sì, rispettivamente. Ora, dove posso ottenere una nuova copia di datetime.x86_64-linux.gnu.so? :)
Joe,

Risposte:


84

Questo è successo a me solo dopo l'aggiornamento 14.10, e sembra che i miei ambienti virtuali ne abbiano vecchie copie /usr/bin/python2.7- a differenza del nuovo binario - non includono datetimebuilt-in e quindi ottengono un errore quando non riescono a trovarlo su disco da nessuna parte . Il nuovo interprete sembra importarlo senza alcun I / O di file (provare a eseguirlo straceper verificare).

Ho corretto ciascun ambiente virtuale attivandolo ed eseguendo:

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

5
Grazie ma perché è necessario? Rompere Python su un aggiornamento è roba cattiva.
Samantha Atkins,

1
Ho provato le altre risposte su questa pagina e non hanno funzionato, ma questa ha funzionato.
Michael Terry,

2
Ottenuto cp: '/usr/bin/python2.7' and '/usr/bin/python2.7' are the same filema l'errore esiste ancora
Umair il

@Umair Potrebbe esserci qualcosa di sbagliato nel tuo activatescript, in quel caso - normalmente, dopo l'attivazione, which python2.7mostrerà il percorso al Python dell'ambiente, non restituirà il percorso al sistema Python.
Brandon Rhodes,

29

Puoi semplicemente reinizializzare virtualenv:

cd $VIRTUAL_ENV
virtualenv .

2
Si noti che dovrebbe essere virtualenv .invece divirtualenv ,
icyrock.com il

4
Questa risposta sembra migliore di quella di Brandon Rhodes.
Azurkin,

Se uno usa virtualenvwrapper può fare cd $VIRTUAL_ENV.
maciek,

OSError: [Errno 1] Operation not permitted
Cerin,

@Cerin, ho avuto lo stesso problema, ho appena usato a sudo virtualenv .per installare il nuovo eseguibile Python, e poi ho cambiato il tutto $VIRTUAL_ENVcon il proprietario della directory corretta.
iMitwe,


2

Ho avuto lo stesso problema e alla fine ho deciso che doveva essere l'interfaccia della riga di comando di AWS perché ho notato che aveva la propria directory di Python. Quindi ho disinstallato l'interfaccia della riga di comando di AWS e l'ho reinstallato e ciò ha risolto il problema:

sudo pip uninstall awscli

sudo pip install awscli


0

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

Solo per datetime:


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

Anche se usi la copia env virtuale

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

al tuo ambiente.


3
Ho eseguito l'aggiornamento a 14.04 e non avevo bisogno di fare alcun collegamento simbolico. Potresti fornire prove del fatto che pasticciare le librerie di sistema in questo modo è necessario e non può essere evitato?
Andrea Lazzarotto,

0

Ho ricevuto l'errore quando ho eseguito l'aggiornamento 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, in caso contrario, suppongo che la reinstallazione del progetto funzionerà. Non toccare le librerie di sistema! Può funzionare per il momento, ma potenzialmente porterà a problemi con gli altri.


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 hai molti virtualenv da aggiornare, puoi usare xargs:

$ ls ~/directory/with/virtualenvs | xargs -L1 virtualenv --no-site-packages
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.