Python: жоден модуль не названий datetime?


56

ОС: Ubuntu 14.04 LTS

Пітон: 2.7.6

Моя установка менеджера рецептів гурманів раптово припинила завантаження. Коли я запускаю його у вікні терміналу, в кінці прослідковування я отримую таке:

import datetime as dt
ImportError: No module named datetime

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

Оновлення: дякую всім, хто відповів!

Тіме, пробач, якщо я поставив це питання в неправильному місці. Будь ласка, опишіть це як новий хлопець, просто перейшовши за посиланнями з веб-сайту Ubuntu.

TheSchwa, я спробував вашу пропозицію і отримав те саме повідомлення про помилку, як вище.

muru, пакет, здається, встановлений, але я не маю уявлення, чи він встановлений / налаштований правильно. Як я можу це дізнатися?

Вибачте за всі запитання, але я старий хлопець RedHat, який деякий час був у відсутності Linux. Всі речі apt / dpkg для мене нові.


Хоча це (лише) на цій темі, ви можете отримати кращу відповідь на переповнення стека . Крім того, я не можу його відтворити. Жодних помилок у тій самій програмі, що і ви ...
Тім

Що станеться, якщо спробувати import datetimeінтерпретатора пітона? Ви можете запустити перекладач, відкривши термінал і виконавши python. Ви можете залишити його Ctrl+d.
TheSchwa

Згідно з dpkg -S $(python -c "import datetime; print datetime.__file__")даним модулем дата, йде з libpython2.7-stdlibпакета. Правильно встановлений цей пакет? Чи можете ви спробувати перевстановити його?
muru

Гаразд, тож конкретний файл, чи є /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.soу вас цей файл? Ви також бачите /usr/lib/python2.7/lib-dynloadперелічені у висновку з echo $(python -c "import sys; print sys.path")? Btw система Stack Exchange насправді не повідомляє коментаторів під час редагування публікації; тому щонайменше завжди публікуйте швидкий коментар, наприклад "Оновлений запитання з інформацією", тому ми отримуємо сповіщення про те, щоб перевірити назад :)
TheSchwa

Оновлено запитання з інформацією. Дякую, TheSchwa! Мої відповіді - "ні" і "відповідно". Тепер, де я можу отримати нову копію datetime.x86_64-linux.gnu.so? :)
Джо

Відповіді:


84

Це сталося зі мною після оновлення 14.10, і, здається, це тому, що у моїй віртуальній середовищі є старі копії цього /usr/bin/python2.7, на відміну від нового бінарного - не datetimeвбудований, і тому отримують помилку, коли не можуть знайти його на диску ніде . Новий інтерпретатор, здається, імпортує його без жодного файлового вводу / виводу (спробуйте запустити його, straceщоб перевірити).

Я виправив кожне віртуальне середовище, активувавши його та запустивши:

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

5
Дякую, але навіщо це потрібно? Порушення python на оновлення - це неприємні речі.
Саманта Аткінс

1
Я спробував інші відповіді на цій сторінці, і вони не спрацювали, але ця все зробила.
Майкл Террі

2
Зрозумів, cp: '/usr/bin/python2.7' and '/usr/bin/python2.7' are the same fileале помилка все ще існує
Umair

@Umair З вашим activateсценарієм може статися щось не так , в такому випадку - зазвичай після активації which python2.7покаже шлях до Python середовища, а не поверне шлях до системи Python.
Брендон Родос

29

Ви можете просто повторно реалізувати virtualenv:

cd $VIRTUAL_ENV
virtualenv .

2
Зауважте, що це має бути virtualenv .замістьvirtualenv ,
icyrock.com

4
Ця відповідь здається кращою, ніж відповідь Брендона Родоса.
азуркін

Якщо ви використовуєте virtualenvwrapper, це можна зробити cd $VIRTUAL_ENV.
maciek

OSError: [Errno 1] Operation not permitted
Серін

@Cerin, у мене була та сама проблема, я просто використав a sudo virtualenv .для встановлення нового виконуваного файлу Python, а потім змінив ціле $VIRTUAL_ENVна правильного власника каталогу.
iMitwe

29

Якщо ви намагаєтеся використати letsencrypt після оновлення, це рішення працювало для мене на форумах letsencrypt - Неможливо використовувати автоматичний імпорт: помилка: жоден модуль з ім'ям io / 2345/3

Я просто повинен був видалити це:

rm ~/.local/share/letsencrypt -R

8
Мені також довелося rm -rf /opt/eff.orgзмусити його працювати
CharlyDelta

7
видалення /opt/eff.org виправлено це
Margus Pala

1
те ж саме для мене ... /opt/eff.org
cljk

2

У мене була така ж проблема, і я нарешті вирішив, що це повинен бути AWS CLI, тому що я помітив, що у нього є власний каталог python. Тож я видалив AWS CLI і перевстановив його, і це вирішило проблему:

sudo pip uninstall awscli

sudo pip install awscli


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

до вашого оточення


3
Я оновив до 14.04 і мені не потрібно було робити жодних символьних посилань. Не могли б ви надати будь-які докази того, що такий порядок в'язання системи необхідний і цього не уникнути?
Андреа Лацаротто

0

Я отримав помилку, коли перейшов з Ubuntu 14.04 до 14.10. Я відтворив свій virtualenv, і питання пішло. Отже, якщо ви працюєте з virtualenv, вам слід відтворити його.

Однак якщо ви цього не зробите, я вважаю, що перевстановлення вашого проекту спрацює. Не торкайтеся жодної системної бібліотеки! Наразі це може працювати, але потенційно може призвести до проблем з іншими.


0

Це відбувається після деяких оновлень Ubuntu. Моє улюблене рішення

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

Це оновлює все необхідне, не виймаючи вже встановлені пакети.

Якщо у вас є багато virtualenvs для оновлення, ви можете використовувати xargs:

$ ls ~/directory/with/virtualenvs | xargs -L1 virtualenv --no-site-packages
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.