ОС: Ubuntu 14.04 LTS
Python: 2.7.6
Моя установка Gourmet Recipe Manager внезапно перестала загружаться. Когда я запускаю его в окне терминала, в конце трассировки я получаю следующее:
import datetime as dt
ImportError: No module named datetime
Насколько я могу судить, ничего не изменилось, и моя установка Python обновлена. Это просто перестало работать вчера. Я, конечно, был бы признателен за хороший подход к диагностике и решению этой проблемы!
Обновление: спасибо всем, кто ответил!
Тим, извини, если я задал этот вопрос не в том месте. Пожалуйста, объясните, что вы новый парень, просто следуя ссылкам с сайта Ubuntu.
Шва, я попробовал ваше предложение и получил то же сообщение об ошибке, что и выше.
Муру, пакет, кажется, установлен, но я понятия не имею, правильно ли он установлен / настроен. Как я могу узнать?
Я прошу прощения за все вопросы, но я старый парень из RedHat, который некоторое время был вне Linux. Все вещи apt / dpkg являются новыми для меня.
import datetime
в интерпретаторе Python? Вы можете запустить переводчик, открыв терминал и выполнив егоpython
. Вы можете оставить это сCtrl+d
.dpkg -S $(python -c "import datetime; print datetime.__file__")
, модуль datetime изlibpython2.7-stdlib
пакета. Правильно ли установлен этот пакет? Можете ли вы попробовать переустановить его?/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")
? Кстати, система Stack Exchange фактически не уведомляет комментаторов при редактировании вашего сообщения; поэтому, по крайней мере, всегда оставляйте быстрый комментарий, такой как «Обновленный вопрос с информацией», чтобы мы получали уведомление с просьбой проверить ответ :)Ответы:
Это случилось со мной после обновления 14.10, и, похоже, потому, что в моих виртуальных средах старые копии этого
/usr/bin/python2.7
, в отличие от нового двоичного файла, не содержатdatetime
встроенных, и поэтому появляется ошибка, когда они нигде не могут найти ее на диске. , Кажется, новый интерпретатор импортирует его без каких-либо файловых операций ввода / вывода (попробуйте запустить егоstrace
для проверки).Я исправил каждую виртуальную среду, активировав ее и запустив:
источник
cp: '/usr/bin/python2.7' and '/usr/bin/python2.7' are the same file
но ошибка все еще существуетactivate
скриптом, в этом случае - обычно после активацииwhich python2.7
он показывает путь к Python среды, а не возвращает путь к системному Python.Вы можете просто повторно инициализировать virtualenv:
источник
virtualenv .
вместоvirtualenv ,
cd $VIRTUAL_ENV
.OSError: [Errno 1] Operation not permitted
sudo virtualenv .
для установки нового исполняемого файла Python, а затем изменил обратно целое$VIRTUAL_ENV
на правильного владельца каталога.Если вы пытаетесь использовать letsencrypt после обновления, это решение работает для меня на форумах letsencrypt - Невозможно использовать автоматический импорт: ошибка: нет модуля с именем io / 2345/3
Я просто должен был удалить это:
источник
rm -rf /opt/eff.org
заставить это работатьУ меня возникла та же проблема, и я наконец решил, что это должен быть интерфейс командной строки AWS, потому что заметил, что у него есть собственный каталог python. Поэтому я удалил AWS CLI и переустановил его, и это решило проблему:
sudo pip uninstall awscli
sudo pip install awscli
источник
Как я нашел некоторые изменения в 14.04, так что вам нужно сделать это от root:
Только для даты и времени:
Для всех модулей:
Также, если вы используете виртуальную копию env
в вашу среду
источник
Я получил ошибку при обновлении с Ubuntu 14.04 до 14.10. Я воссоздал свой virtualenv, и проблема ушла. Так что если вы работаете с virtualenv, вы должны воссоздать его.
Однако, если вы этого не сделаете, я полагаю, что переустановка вашего проекта будет работать. Не прикасайтесь к системным библиотекам! Это может работать в настоящее время, но потенциально может привести к проблемам с другими.
источник
Это происходит после некоторых обновлений Ubuntu. Мое любимое решение
Это обновляет все необходимое без удаления уже установленных пакетов.
Если вам нужно обновить virtualenv, вы можете использовать
xargs
:источник