python2.7 kaputt durch weakref import error, bitte helfen sie!


27

Ich habe gerade von 16.04 auf 17.10 aktualisiert und jedes Mal, wenn ich versuche, einen python2.7-Befehl auszuführen, erhalte ich den folgenden Fehler:

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

Ein anderer Benutzer hatte ein ähnliches Problem, das sich jedoch auf alle Python-Programme auswirkt, die ich auszuführen versuche. Ich kann nichts über Pip installieren oder Python-Skripte verwenden. Ich habe wirklich keine Ahnung, was ich tun soll, Hilfe wäre sehr dankbar.

Ausgabe von "python --version" ist

Python 2.7.12

"update python" erzeugt jedoch:

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

Ich habe von 17.04 auf 17.10 aktualisiert und stehe vor dem selben ImportError: cannot import name _remove_dead_weakref. Mein Python ist 2.7.14
Csaba Toth

In meinem Fall verwende ich virtuelle Umgebungen, und ich vermute, dass der Python in diesen virtuellen Umgebungen jetzt nicht mehr mit der Systemversion synchron ist, sodass dieser Fehler auftritt. Ich vermute, dass die Neuerstellung der virtuellen Umgebung von Grund auf mein Problem lösen könnte, obwohl es schwierig war, alle Pakete zu installieren :(
Csaba Toth

Antworten:


26

Dies ist keine Ubuntu-Lösung, aber da diese Frage in den Suchergebnissen für den Fehler hoch erscheint, wollte ich sagen, dass ich diesen Fehler unter OSX hatte, weil mein Standardsystem Python 2.7 war und ich währenddessen "python @ 2" installiert habe ein anderes Paket installieren.

Wenn Sie unter OSX arbeiten und Homebrew verwenden, überprüfen Sie, ob Ihre mit brew installierten Pakete ausgeführt brew listwerden. Wenn "python @ 2" in dieser Liste angezeigt wird und Python 2.7 Ihr System-Python ist, können Sie das mit brew installierte Paket entfernenbrew remove python@2 --ignore-dependencies


2
Dies geschah nach einem Brew-Upgrade, bei dem viele Pakete durch neue Pakete der package @ -Version ersetzt wurden ... Danke!
Hugo H

2
Das hat mir geholfen. Beim Laufen swiftauf dem Mac habe ich die oben genannten Fehler bekommen. Es stellte sich heraus, dass python2 von brew verwendet wurde. Das Entfernen hat mein Problem behoben.
Jmurphyau

2
Danke dafür. Es hat geholfen, meine lldbWarnung zu lösen .
Steven Hepting

Vielen Dank für die Köpfe hoch. Ich habe gerade meine Symlinks in / usr / local / bin / python aktualisiert, um auf das neueste Homebrew-Python anstatt auf System-Python zu verweisen
matt

9

Wenn Sie eine virtuelle Umgebung verwendet haben, müssen Sie diese neu erstellen. Die andere Möglichkeit besteht darin, dass Sie eine quellbasierte oder von der Seite installierte Python-Version verwenden, die mit der Systemversion kollidiert. In diesem Fall müssen Sie sicherstellen, dass die richtigen Ordner und Pfade in den verschiedenen Umgebungen konfiguriert sind.


3

In meinem Fall handelte es sich um einen Fehler in Bezug auf die virtuelle Umgebung. Das Erstellen einer neuen virtuellen Umgebung hat für mich also funktioniert. Hier ist die Liste der Befehle, die Ihnen dabei helfen können.

Virtuelle Umgebung installieren:

pip install virtualenv

Erstellen einer neuen virtuellen Umgebung:

virtualenv -p {env_name}

Aktivieren der virtuellen Umgebung:

source env_name/bin/activate

Deaktivieren Sie Ihre virtuelle Umgebung:

deactivate

Das OP erwähnt keine virtuelle Umgebung, sodass Ihre Antwort das Problem nicht anspricht, wenn keine virtuelle Umgebung verwendet wird.
MikeM
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.