python2.7 quebrado por um erro de importação weakref, por favor ajude!


27

Acabei de atualizar de 16.04 para 17.10, e toda vez que tento executar qualquer comando python2.7, recebo este erro:

pip install --upgrade pip
Traceback (most recent call last):
File "/home/XXXX/bin/pip", line 7, in <module>
    from pip import main
  File "/home/XXXX/local/lib/python2.7/site-packages/pip/__init__.py", 
line 5, in <module>
    import logging
  File "/usr/lib/python2.7/logging/__init__.py", line 26, in <module>
    import sys, os, time, cStringIO, traceback, warnings, weakref, 
collections
  File "/home/XXXX/lib/python2.7/weakref.py", line 14, in <module>
    from _weakref import (
ImportError: cannot import name _remove_dead_weakref

Outro usuário teve um problema semelhante, mas isso afeta qualquer programa python que eu tente executar. Não consigo instalar nada via pip ou usar scripts python. Eu realmente não tenho idéia do que fazer, a assistência seria muito apreciada.

A saída de "python --version" é

Python 2.7.12

no entanto, "atualizar python" produz:

python is already the newest version (2.7.14-2ubuntu1).

Atualizei de 17.04 para 17.10 e enfrento o mesmo ImportError: cannot import name _remove_dead_weakref. Meu Python é 2.7.14
Csaba Toth

No meu caso, estou usando ambientes virtuais e suspeito que o python dentro desses ambientes virtuais esteja fora de sincronia com a versão do sistema tanto que esse erro ocorre. Eu suspeito que a reconstrução do ambiente virtual a partir do zero pode resolver o meu problema, embora tenha sido luta para instalar todos os pacotes :(
Csaba Toth

Respostas:


26

Esta não é uma solução do Ubuntu, mas como essa pergunta parece alta nos resultados de pesquisa do erro, eu queria dizer que tinha esse erro no OSX porque meu sistema padrão Python era 2,7 e eu instalei o "python @ 2" enquanto instalando outro pacote.

Se você estiver no OSX e estiver usando o homebrew, verifique os pacotes instalados com o brew executando brew list, e se "python @ 2" aparecer nessa lista e o Python 2.7 for o sistema Python, você poderá remover o pacote instalado com o brewbrew remove python@2 --ignore-dependencies


2
Isso aconteceu após uma atualização do brew substituindo muitos pacotes pelos novos pacotes @ versão ... Obrigado!
Hugo H

2
Isso me ajudou. Ao rodar swiftno Mac, recebi os erros acima mencionados. Acabou que era porque estava usando python2 da fermentação. A remoção corrigiu meu problema.
jmurphyau

2
Obrigado por isso. Isso ajudou a resolver o meu lldbaviso.
Steven Hepting

Obrigado pela atenção. Eu apenas atualizei meus links simbólicos em / usr / local / bin / python para apontar para o python Homebrew mais recente, em vez do python do sistema
matt

9

Caso você esteja usando um ambiente virtual, será necessário recriá-lo. A outra possibilidade é que você use alguma versão python baseada em fonte ou instalada em lado que colidir com a do sistema. Nesse caso, é necessário esclarecer que as pastas e os caminhos corretos estão configurados para os vários ambientes.


3

No meu caso, foi um erro relacionado ao ambiente virtual. Então, criar um novo ambiente virtual funcionou para mim. Aqui está a lista de comandos que podem ajudá-lo na mesma.

Instalando o ambiente virtual:

pip install virtualenv

Criando um novo ambiente virtual:

virtualenv -p {env_name}

Ativando o ambiente virtual:

source env_name/bin/activate

Desativando seu ambiente virtual:

deactivate

O OP não faz menção a um ambiente virtual para que sua resposta não resolva o problema quando um ambiente virtual não é usado.
MikeM
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.