Python: нет модуля с именем datetime?

46

ОС: Ubuntu 14.04 LTS

Python: 2.7.6

Моя установка Gourmet Recipe Manager внезапно прекратила загрузку. Когда я запускаю его в окне терминала, я получаю следующее в конце трассировки:

import datetime as dt
ImportError: No module named datetime

Насколько я могу судить, ничего не изменилось, и моя установка Python обновлена. Он просто прекратил работать вчера. Я, безусловно, ценю хороший подход к диагностике и устранению этой проблемы!

Обновление: спасибо всем, кто ответил!

Тим, извините, если я задал этот вопрос не в том месте. Пожалуйста, сделайте это, чтобы стать новым парнем, просто следуя ссылкам с веб-сайта Ubuntu.

TheSchwa, я попробовал ваше предложение и получил то же сообщение об ошибке, что и выше.

muru, пакет, похоже, установлен, но я понятия не имею, правильно ли он установлен / настроен. Как я могу узнать?

Мне жаль всех вопросов, но я старый парень RedHat, который некоторое время был в стороне от Linux. Все вещи apt / dpkg для меня новы.

    
задан Joe 10.08.2014 в 08:51
источник

7 ответов

70

Это произошло со мной после обновления 14.10, и похоже, потому что у моих виртуальных сред есть старые копии /usr/bin/python2.7 , которые, в отличие от нового двоичного файла, не включают в себя datetime встроенный, и поэтому получите когда они не могут найти его на диске в любом месте. Кажется, что новый интерпретатор импортирует его без ввода / вывода файлов (попробуйте запустить его в strace для проверки).

Я установил каждую виртуальную среду, активировав ее и выполнив:

$ cp /usr/bin/python2.7 $(which python2.7)
    
ответ дан Brandon Rhodes 28.10.2014 в 11:54
24

Вы можете просто повторно инициализировать virtualenv:

cd $VIRTUAL_ENV
virtualenv .
    
ответ дан sureshvv 03.12.2014 в 06:54
24

Если вы пытаетесь использовать letencrypt после обновления, это решение сработало для меня letencrypt forums - Невозможно использовать автоматический импорт: ошибка: нет модуля с именем io / 2345/3

Мне просто пришлось удалить это:

rm ~/.local/share/letsencrypt -R
    
ответ дан Cody Moniz 18.11.2016 в 01:39
2

У меня была такая же проблема, и, наконец, я решил, что это должен быть AWS CLI, потому что я заметил, что у него есть собственный каталог python. Поэтому я удалил AWS CLI и переустановил его, и это устранило проблему:

sudo pip uninstall awscli

sudo pip install awscli     

ответ дан JBaczuk 14.12.2016 в 00:04
0

Как я нашел некоторые изменения в 14.04, поэтому вам нужно сделать это от root:

Только для даты и времени:


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/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

Также, если вы используете виртуальную копию env

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

к вашему env.

    
ответ дан Ilya Shevyrev 11.09.2014 в 20:14
0

Я получил ошибку, когда обновился с Ubuntu 14.04 до 14.10. Я воссоздал свой virtualenv, и проблема исчезла. Поэтому, если вы работаете с virtualenv, вы должны воссоздать его.

Однако, если вы этого не сделаете, я полагаю, что переустановка вашего проекта будет работать. Не трогайте системные библиотеки! Он может работать пока, но потенциально может привести к проблемам с другими.

    
ответ дан Doomsday 16.11.2014 в 11:06
0

Это происходит после некоторых обновлений Ubuntu. Мое любимое решение -

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

Это обновляет все необходимое, не удаляя уже установленные пакеты.

Если у вас много виртуальных пользователей для обновления, вы можете использовать xargs :

$ ls ~/directory/with/virtualenvs | xargs -L1 virtualenv --no-site-packages
    
ответ дан brandizzi 21.10.2016 в 11:43