python2.7 interrotto da un errore di importazione deboli, per favore aiutatemi!


27

Ho appena aggiornato dal 16.04 al 17.10 e ogni volta che tento di eseguire qualsiasi comando python2.7, ottengo questo errore:

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

Un altro utente ha avuto un problema simile, ma questo influisce su qualsiasi programma Python che tento di eseguire. Non riesco a installare nulla tramite pip o utilizzare qualsiasi script Python. Non ho davvero idea di cosa fare, l'assistenza sarebbe molto apprezzata.

L'output di "python --version" è

Python 2.7.12

tuttavia "update python" produce:

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

Ho aggiornato dal 17.04 al 17.10 e di fronte allo stesso ImportError: cannot import name _remove_dead_weakref. My Python è 2.7.14
Csaba Toth

Nel mio caso sto usando ambienti virtuali e sospetto che il pitone all'interno di quegli ambienti virtuali non sia più sincronizzato con la versione del sistema così tanto che si verifichi questo errore. Ho il sospetto che la ricostruzione dell'ambiente virtuale da zero possa risolvere il mio problema, anche se è stato difficile installare tutti i pacchetti :(
Csaba Toth

Risposte:


26

Questa non è una soluzione Ubuntu, ma poiché questa domanda appare alta nei risultati di ricerca dell'errore, volevo dire che avevo questo errore su OSX perché il mio sistema predefinito Python era 2.7 e ho installato "python @ 2" mentre installare un altro pacchetto.

Se sei su OSX e stai usando homebrew, controlla i tuoi pacchetti installati con brew eseguendo brew list, e se "python @ 2" appare in quell'elenco e Python 2.7 è il tuo sistema Python, puoi rimuovere il pacchetto brew installato conbrew remove python@2 --ignore-dependencies


2
Questo è successo dopo un aggiornamento della birra che ha sostituito molti pacchetti con i loro pacchetti @ versione nuovi ... Grazie!
Hugo H,

2
Questo mi ha aiutato. Durante l'esecuzione swiftsu Mac ho riscontrato gli errori sopra menzionati. Si è scoperto che stava usando python2 da brew. Rimuoverlo risolto il mio problema.
jmurphyau,

2
Grazie per questo. Mi ha aiutato a risolvere il mio lldbavvertimento.
Steven Hepting,

Grazie per il testa a testa. Ho appena aggiornato i miei collegamenti simbolici in / usr / local / bin / python per indicare l'ultimo pitone Homebrew, piuttosto che il sistema python
matt

9

Nel caso in cui stavi utilizzando un ambiente virtuale, dovrai ricrearlo. L'altra possibilità è che tu usi una versione di Python basata sul sorgente o installata lateralmente che si scontra con quella di sistema. In tal caso, è necessario chiarire che le cartelle e i percorsi corretti sono configurati, osservati dai vari ambienti.


3

Nel mio caso, si è trattato di un errore relativo all'ambiente virtuale. Quindi, creare un nuovo ambiente virtuale ha funzionato per me. Ecco l'elenco dei comandi che possono esserti utili nello stesso.

Installazione di ambiente virtuale:

pip install virtualenv

Creazione di un nuovo ambiente virtuale:

virtualenv -p {env_name}

Attivazione dell'ambiente virtuale:

source env_name/bin/activate

Disattivare il tuo ambiente virtuale:

deactivate

L'OP non fa menzione di un env virtuale, quindi la tua risposta non risolve il problema quando non viene utilizzato un env virtuale.
MikeM
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.