python2.7 uszkodzony przez błąd importu słabego odnośnika, proszę o pomoc!


27

Właśnie zaktualizowałem z 16.04 do 17.10 i za każdym razem, gdy próbuję uruchomić dowolną komendę python2.7, pojawia się ten błąd:

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

Inny użytkownik miał podobny problem, ale dotyczy to dowolnego programu w języku Python, który próbuję uruchomić. Nie mogę niczego instalować za pomocą pip ani używać skryptów Pythona. Naprawdę nie mam pojęcia, co robić, pomoc byłaby bardzo mile widziana.

Dane wyjściowe „Python --version” to

Python 2.7.12

jednak „aktualizacja python” powoduje:

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

Zaktualizowałem z 17.04 do 17.10 i to samo ImportError: cannot import name _remove_dead_weakref. Mój Python to 2.7.14
Csaba Toth

W moim przypadku używam środowisk wirtualnych i podejrzewam, że python w tych środowiskach wirtualnych nie jest zsynchronizowany z wersją systemu tak bardzo, że występuje ten błąd. Podejrzewam, że przebudowa środowiska wirtualnego od podstaw może rozwiązać mój problem, chociaż trudno było zainstalować wszystkie pakiety :(
Csaba Toth

Odpowiedzi:


26

To nie jest rozwiązanie Ubuntu, ale ponieważ to pytanie pojawia się wysoko w wynikach wyszukiwania błędu, chciałem powiedzieć, że miałem ten błąd w OSX, ponieważ mój domyślny systemowy Python to 2.7, a ja warzę zainstalowane „python @ 2” podczas instalowanie innego pakietu.

Jeśli korzystasz z OSX i używasz homebrew, sprawdź, czy pakiety zainstalowane za pomocą brew są uruchomione brew list, a jeśli na tej liście pojawi się „python @ 2”, a Python 2.7 to systemowy Python, możesz usunąć zainstalowany pakiet brew za pomocąbrew remove python@2 --ignore-dependencies


2
Stało się tak po aktualizacji naparu zastępującej wiele pakietów nowymi pakietami @ w wersji ... Dzięki!
Hugo H

2
To mi pomogło. Podczas pracy swiftna komputerze Mac otrzymałem wyżej wymienione błędy. Okazało się, że było tak, ponieważ korzystał z Pythona 2 z brew. Usunięcie go rozwiązało mój problem.
jmurphyau

2
Dzięki za to. Pomogło rozwiązać moje lldbostrzeżenie.
Steven Hepting,

Dzięki za heads-upy. Właśnie zaktualizowałem moje dowiązania symboliczne w / usr / local / bin / python, aby wskazywały na najnowszy python Homebrew, zamiast na python systemowy
mat

9

W przypadku korzystania ze środowiska wirtualnego konieczne będzie jego ponowne utworzenie. Inną możliwością jest użycie źródłowej lub bocznie zainstalowanej wersji Pythona, która koliduje z wersją systemową. W takim przypadku musisz ustalić, czy odpowiednie foldery i ścieżki są skonfigurowane, patrząc z różnych środowisk.


3

W moim przypadku był to błąd związany ze środowiskiem wirtualnym. Tak więc stworzenie nowego środowiska wirtualnego działało dla mnie. Oto lista poleceń, które mogą ci w tym pomóc.

Instalowanie środowiska wirtualnego:

pip install virtualenv

Tworzenie nowego środowiska wirtualnego:

virtualenv -p {env_name}

Aktywacja środowiska wirtualnego:

source env_name/bin/activate

Dezaktywacja wirtualnego środowiska:

deactivate

OP nie wspomina o wirtualnej env, więc twoja odpowiedź nie rozwiązuje problemu, gdy wirtualna env nie jest używana.
MikeM
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.