Sistema operacional: Ubuntu 14.04 LTS
Python: 2.7.6
Minha instalação do Gourmet Recipe Manager parou de repente. Quando o executo em uma janela de terminal, recebo o seguinte no final do rastreamento:
import datetime as dt
ImportError: No module named datetime
Até onde eu sei, nada foi alterado e minha instalação do Python está atualizada. Simplesmente parou de trabalhar ontem. Eu certamente apreciaria uma boa abordagem para diagnosticar e corrigir esse problema!
Atualização: obrigado a todos que responderam!
Tim, desculpe se fiz esta pergunta no lugar errado. Por favor, considere ser um cara novo simplesmente seguindo os links do site do Ubuntu.
TheSchwa, tentei sua sugestão e recebi a mesma mensagem de erro acima.
muru, o pacote parece estar instalado, mas não faço ideia se está instalado / configurado corretamente. Como posso descobrir?
Sinto muito por todas as perguntas, mas sou um velho RedHat que está longe do Linux há algum tempo. Todo o material do apt / dpkg é novo para mim.
import datetime
no interpretador python? Você pode iniciar o intérprete abrindo um terminal e executandopython
. Você pode deixar com issoCtrl+d
.dpkg -S $(python -c "import datetime; print datetime.__file__")
, o módulo datetime é dolibpython2.7-stdlib
pacote. Esse pacote está instalado corretamente? Você pode tentar reinstalá-lo?/usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.so
você tem esse arquivo? Você também vê/usr/lib/python2.7/lib-dynload
listado na saída deecho $(python -c "import sys; print sys.path")
? Na verdade, o sistema Stack Exchange não notifica os comentaristas quando você edita sua postagem; assim pelo menos sempre postar um comentário rápido como "questão atualizado com a informação" para que receber uma notificação dizendo que volte :)Respostas:
Isso aconteceu comigo após a atualização 14.10, e parece que meus ambientes virtuais têm cópias antigas
/usr/bin/python2.7
disso - diferentemente do novo binário - não incluemdatetime
built-in e, portanto, recebem um erro quando não conseguem encontrá-lo em disco em nenhum lugar . O novo intérprete parece importá-lo sem nenhuma E / S de arquivo (tente executá-lostrace
para verificar).Corrigi cada ambiente virtual ativando-o e executando:
fonte
cp: '/usr/bin/python2.7' and '/usr/bin/python2.7' are the same file
mas o erro ainda existeactivate
script, nesse caso - normalmente, após a ativação,which python2.7
mostrará o caminho para o Python do ambiente, não retornará o caminho para o sistema Python.Você pode apenas reinicializar o virtualenv:
fonte
virtualenv .
invés devirtualenv ,
cd $VIRTUAL_ENV
.OSError: [Errno 1] Operation not permitted
sudo virtualenv .
para instalar o novo executável Python e depois mudei de volta o todo$VIRTUAL_ENV
para o proprietário do diretório correto.Se você está tentando isso usando o letsencrypt após uma atualização, esta solução funcionou para mim nos fóruns do letsencrypt - Não é possível usar a importação automática: error: nenhum módulo chamado io / 2345/3
Eu apenas tive que excluir isso:
fonte
rm -rf /opt/eff.org
fazê-lo funcionarEu tive o mesmo problema e finalmente decidi que deveria ser a CLI da AWS porque notei que ela tinha seu próprio diretório python. Desinstalei o AWS CLI e reinstalei-o, corrigindo o problema:
sudo pip uninstall awscli
sudo pip install awscli
fonte
Como eu encontrei algumas mudanças no 14.04, você precisa fazer isso a partir do root:
Somente para data e hora:
Para todos os módulos:
Além disso, se você usar uma cópia de ambiente virtual
ao seu env.
fonte
Eu recebi o erro quando atualizei do Ubuntu 14.04 para 14.10. Recriei meu virtualenv e o problema foi resolvido. Portanto, se você estiver trabalhando com um virtualenv, recrie-o.
No entanto, se não, suponho que a reinstalação do seu projeto funcione. Não toque em nenhuma biblioteca do sistema! Pode funcionar por enquanto, mas potencialmente levará a problemas com outras pessoas.
fonte
Isso acontece após algumas atualizações do Ubuntu. Minha solução favorita é
Isso atualiza tudo o que é necessário sem remover os pacotes já instalados.
Se você tiver muitos virtualenvs para atualizar, poderá usar
xargs
:fonte