Python: datetime adında bir modül yok mu?


56

İşletim Sistemi: Ubuntu 14.04 LTS

Python: 2.7.6

Gurme Tarif Yöneticisi kurulumum aniden yükleme durdu. Bir terminal penceresinde çalıştırdığımda, geri izleme sonunda aşağıdakileri alıyorum:

import datetime as dt
ImportError: No module named datetime

Söyleyebileceğim kadarıyla, hiçbir şey değişmedi ve Python kurulumum güncel. Sadece dün çalışmayı bıraktı. Bu problemi teşhis etmek ve düzeltmek için iyi bir yaklaşımı kesinlikle takdir ediyorum!

Güncelleme: yanıtlayan herkese teşekkürler!

Tim, bu soruyu yanlış yerde sorsam özür dilerim. Lütfen Ubuntu web sitesindeki bağlantıları takip ederek yeni bir erkek olmanız için tebeşirle işaretleyin.

TheSchwa, önerinizi denedim ve yukarıdaki ile aynı hata iletisini aldım.

muru, paket kurulu gibi görünüyor, ancak doğru kurulduğunu / yapılandırıldığını bilmiyordum. Nasıl öğrenebilirim?

Tüm sorular için özür dilerim, ama bir süredir Linux'tan uzak duran yaşlı bir RedHat adamıyım. Tüm apt / dpkg işleri benim için yeni.


Buradaki (sadece) konu üzerinde olsa da, Yığın Taşması ile ilgili daha iyi bir yanıt alabilirsiniz . Ayrıca, onu çoğaltamıyorum. Hiç hata yok, seninle aynı kurulumda ...
Tim

import datetimePython yorumlayıcısını denerseniz ne olur ? Tercümanı bir terminal açıp çalıştırarak başlatabilirsiniz python. İle bırakabilirsiniz Ctrl+d.
TheSchwa

Buna göre dpkg -S $(python -c "import datetime; print datetime.__file__"), datetime modülü libpython2.7-stdlibpaketten geliyor. Bu paket doğru bir şekilde kurulmuş mu? Yeniden yüklemeyi deneyebilir misiniz?
muru

Tamam, yani belirli bir dosya /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.sobu dosyaya sahip mi? Ayrıca /usr/lib/python2.7/lib-dynloadçıktısında listelenen görüyor echo $(python -c "import sys; print sys.path")musunuz? BT Stack Exchange sistemi aslında yazınızı düzenlerken yorum yapanları bilgilendirmiyor; biz :) tekrar kontrol etmemizi belirten bir bildirim almak çok çok en azından hep böyle "bilgi ile güncellendi sorusuna" olarak hızlı bir Yorum yazmak
TheSchwa

Bilgi ile güncellendi soru. Teşekkürler, TheSchwa! Cevaplarım sırasıyla hayır ve evet. Şimdi, datetime.x86_64-linux.gnu.so'nun yeni bir kopyasını nereden alabilirim? :)
Joe,

Yanıtlar:


84

Bu sadece 14.10 güncellemesinden sonra başıma geldi ve sanal ortamlarımın eski kopyalarına sahip /usr/bin/python2.7olduğu görünüyor - yeni ikili dosyadan farklı olarak - datetimeyerleşik içermiyor ve böylece diskte hiçbir yerde bulamadıklarında hata alıyorlar. . Yeni yorumlayıcı, herhangi bir dosya G / Ç'sı olmadan içe aktarıyor gibi görünüyor ( stracekontrol etmek için çalıştırmayı deneyin ).

Her sanal ortamı etkinleştirip çalıştırarak düzelttim:

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

5
Teşekkürler ama bu neden gerekli? Bir yükseltme üzerinde python kırmak kötü bir şey.
Samantha Atkins

1
Bu sayfadaki diğer cevapları denedim ama işe yaramadı, ama bu yaptı.
Michael Terry

2
Anladım cp: '/usr/bin/python2.7' and '/usr/bin/python2.7' are the same fileama hata hala var
Umair

@Umair activateKomut dosyanızda yanlış bir şeyler olabilir , bu durumda - normal olarak, etkinleştirme işleminden sonra, which python2.7Python sistemine giden yolu gösterecek, Python sistemine giden yolu göstermeyecektir.
Brandon Rhodes,

29

Virtualenv'i şu şekilde yeniden başlatabilirsiniz:

cd $VIRTUAL_ENV
virtualenv .

2
virtualenv .Bunun yerine olması gerektiğini unutmayınvirtualenv ,
icyrock.com

4
Bu cevap Brandon Rhodes’un cevaplarından daha iyi görünüyor.
azurkin

Eğer biri kullanırsa virtualenvwrapper yapabilir cd $VIRTUAL_ENV.
maciek

OSError: [Errno 1] Operation not permitted
Cerin

@Cerin, ben de aynı problemi yaşadım, sadece sudo virtualenv .yeni Python çalıştırılabilirini kurmak için kullandım ve daha sonra hepsini $VIRTUAL_ENVdoğru dizin sahibine çevirdim .
iMitwe

29

Bunu yükseltme işleminden sonra letsencrypt kullanmaya çalışıyorsanız, bu çözüm benim için çalıştı. Forumlar letsencrypt forumları - Otomatik alma kullanılamıyor: hata: io / 2345/3 adlı modül yok

Sadece bunu silmek zorunda kaldım:

rm ~/.local/share/letsencrypt -R

8
Ayrıca rm -rf /opt/eff.orgçalışmasını sağlamak zorunda kaldım
CharlyDelta 20:17

7
kaldırılması /opt/eff.org düzeltildi
Margus Pala

1
benim için aynı ... /opt/eff.org
cljk

2

Aynı problemi yaşadım ve sonunda AWS CLI olması gerektiğine karar verdim çünkü kendi python dizinine sahip olduğunu fark ettim. Böylece AWS CLI'yi kaldırdım ve yeniden yükledim ve bu sorunu düzeltti:

sudo pip uninstall awscli

sudo pip install awscli


0

14.04'te bazı değişiklikler bulduğum için root'tan bunu yapmanız gerekiyor:

Sadece tarih-saat için:


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

Tüm modüller için:


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

Ayrıca sanal env kopyası kullanıyorsanız

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

env.


3
14.04'e yükselttim ve herhangi bir sembolik bağlantı yapmam gerekmedi. Sistem kütüphanelerini bu şekilde karıştırmanın gerekli olduğunu ve kaçınılmayacağına dair herhangi bir kanıt sunabilir misiniz?
Andrea Lazzarotto 11:14

0

Ubuntu 14.04'ten 14.10'a yükselttiğimde hatayla karşılaştım. Virtualenv'imi yeniden yarattım ve sorun çözüldü. Öyleyse bir sanal aygıtla çalışıyorsanız, yeniden oluşturmanız gerekir.

Ancak yapmazsanız, projenizi yeniden yüklemenin işe yarayacağını varsayalım. Hiçbir sistem kütüphanesine dokunmayın! Şimdilik işe yarayabilir, ancak potansiyel olarak başkalarıyla da sorunlara yol açacaktır.


0

Bu, bazı Ubuntu yükseltmelerinden sonra olur. En sevdiğim çözüm

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

Bu, zaten kurulu olan paketleri kaldırmadan gereken her şeyi günceller.

Güncellemek için çok sayıda sanal sunucunuz varsa, şunları kullanabilirsiniz xargs:

$ ls ~/directory/with/virtualenvs | xargs -L1 virtualenv --no-site-packages
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.