Python: tidak ada modul bernama datetime?

56

OS: Ubuntu 14.04 LTS

Python: 2.7.6

Instalasi Gourmet Recipe Manager saya tiba-tiba berhenti memuat. Ketika saya menjalankannya di jendela terminal, saya mendapatkan yang berikut di akhir traceback:

import datetime as dt
ImportError: No module named datetime

Sejauh yang saya tahu, tidak ada yang berubah dan instalasi Python saya mutakhir. Itu hanya berhenti bekerja kemarin. Saya pasti akan menghargai pendekatan yang baik untuk mendiagnosis dan memperbaiki masalah ini!

Perbarui: terima kasih untuk semua yang menjawab!

Tim, saya minta maaf jika saya menanyakan pertanyaan ini di tempat yang salah. Harap tandai untuk menjadi pria baru hanya dengan mengikuti tautan dari situs web Ubuntu.

TheSchwa, saya mencoba saran Anda dan mendapatkan pesan kesalahan yang sama seperti di atas.

muru, paket sepertinya sudah diinstal, tapi saya tidak tahu apakah sudah diinstal / dikonfigurasi dengan benar. Bagaimana saya tahu?

Saya minta maaf untuk semua pertanyaan, tapi saya orang RedHat tua yang telah lama meninggalkan Linux. Semua barang apt / dpkg baru bagi saya.

Joe
sumber
Meskipun ini (hanya) pada topik di sini, Anda mungkin mendapatkan respons yang lebih baik tentang Stack Overflow . Juga, saya tidak bisa mereproduksi itu. Tidak ada kesalahan sama sekali, pada pengaturan yang sama seperti Anda ...
Tim
Apa yang terjadi jika Anda mencoba import datetimemenggunakan interpreter python? Anda dapat memulai juru bahasa dengan membuka terminal dan mengeksekusi python. Anda bisa membiarkannya Ctrl+d.
TheSchwa
Menurut dpkg -S $(python -c "import datetime; print datetime.__file__"), modul datetime berasal dari libpython2.7-stdlibpaket. Apakah paket itu dipasang dengan benar? Bisakah Anda mencoba menginstalnya kembali?
muru
Oke, jadi file spesifiknya adalah /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.soAnda punya file itu? Anda juga melihat /usr/lib/python2.7/lib-dynloadtercantum dalam output dari echo $(python -c "import sys; print sys.path")? Btw sistem Stack Exchange sebenarnya tidak memberi tahu komentator ketika Anda mengedit posting Anda; jadi paling tidak selalu posting komentar cepat seperti "Pertanyaan yang diperbarui dengan info" sehingga kami mendapatkan pemberitahuan yang memberitahu kami untuk memeriksa kembali :)
TheSchwa
Pertanyaan yang diperbarui dengan info. Terima kasih, TheSchwa! Jawaban saya masing-masing tidak dan ya. Sekarang, di mana saya bisa mendapatkan salinan baru datetime.x86_64-linux.gnu.so? :)
Joe

Jawaban:

84

Ini baru saja terjadi pada saya setelah pembaruan 14.10, dan sepertinya itu karena lingkungan virtual saya memiliki salinan lama /usr/bin/python2.7itu - tidak seperti biner baru - tidak termasuk datetimebuilt-in, dan mendapatkan kesalahan ketika mereka tidak dapat menemukannya pada disk di mana saja . Juru bahasa baru tampaknya mengimpornya tanpa file I / O (coba jalankan di bawah straceuntuk memeriksa).

Saya memperbaiki setiap lingkungan virtual dengan mengaktifkannya dan menjalankan:

$ cp /usr/bin/python2.7 $(which python2.7)
Brandon Rhodes
sumber
5
Terima kasih tetapi mengapa ini perlu? Melanggar python pada upgrade adalah hal-hal buruk.
Samantha Atkins
1
Saya mencoba jawaban lain di halaman ini dan tidak berhasil, tetapi yang ini berhasil.
Michael Terry
2
Dapat cp: '/usr/bin/python2.7' and '/usr/bin/python2.7' are the same filetetapi kesalahan masih ada
Umair
@Umair Mungkin ada sesuatu yang salah dengan activateskrip Anda , dalam hal ini - biasanya, setelah aktivasi, which python2.7akan menunjukkan path ke Python lingkungan, tidak mengembalikan path ke sistem Python.
Brandon Rhodes
29

Anda bisa menginisialisasi ulang virtualenv dengan:

cd $VIRTUAL_ENV
virtualenv .
sureshvv
sumber
2
Perhatikan bahwa itu virtualenv .bukanvirtualenv ,
icyrock.com
4
Jawaban ini tampaknya lebih baik daripada jawaban Brandon Rhodes.
azurkin
Jika seseorang menggunakan virtualenvwrapper dapat melakukannya cd $VIRTUAL_ENV.
maciek
OSError: [Errno 1] Operation not permitted
Cerin
@ Cerin, saya memiliki masalah yang sama, saya hanya menggunakan sudo virtualenv .untuk menginstal executable Python baru, dan kemudian mengubah kembali keseluruhan $VIRTUAL_ENVke pemilik direktori yang benar.
iMitwe
2

Saya memiliki masalah yang sama dan akhirnya memutuskan itu harus AWS CLI karena saya perhatikan bahwa itu memiliki direktori python sendiri. Jadi saya menghapus AWS CLI dan menginstalnya kembali dan itu memperbaiki masalah:

sudo pip uninstall awscli

sudo pip install awscli

JBaczuk
sumber
0

Ketika saya menemukan beberapa perubahan pada 14,04 sehingga Anda perlu melakukan ini dari root:

Hanya untuk datetime:


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

Untuk semua modul:


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

Juga jika Anda menggunakan salinan env virtual

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

ke env Anda.

Ilya Shevyrev
sumber
3
Saya meningkatkan ke 14,04 dan tidak perlu melakukan symlink. Bisakah Anda memberikan bukti bahwa mengacaukan sistem lib seperti ini perlu dan tidak dapat dihindari?
Andrea Lazzarotto
0

Saya mendapatkan kesalahan ketika saya memutakhirkan dari Ubuntu 14.04 ke 14.10. Saya membuat ulang virtualenv saya dan masalahnya hilang. Jadi jika Anda bekerja dengan virtualenv, Anda harus membuatnya kembali.

Namun jika tidak, saya kira menginstal ulang proyek Anda akan berhasil. Jangan menyentuh pustaka sistem apa pun! Ini dapat bekerja untuk saat ini, tetapi berpotensi akan menyebabkan masalah dengan orang lain.

Kiamat
sumber
0

Ini terjadi setelah beberapa peningkatan Ubuntu. Solusi favorit saya adalah

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

Ini memperbarui semua yang diperlukan tanpa menghapus paket yang sudah diinstal.

Jika Anda memiliki banyak virtualenv untuk diperbarui, Anda dapat menggunakan xargs:

$ ls ~/directory/with/virtualenvs | xargs -L1 virtualenv --no-site-packages
brandizzi
sumber