python2.7 не работает из-за ошибки импорта, пожалуйста, помогите!

27

Я только что обновился с 16.04 до 17.10, и каждый раз, когда я пытаюсь выполнить любую команду python2.7, я получаю эту ошибку:

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

У другого пользователя была похожая проблема, но это касается любой программы на Python, которую я пытаюсь выполнить. Я не могу ничего установить через pip или использовать скрипты Python. Я действительно понятия не имею, что делать, помощь будет принята с благодарностью.

Вывод "python --version"

Python 2.7.12

Однако «Обновление Python» производит:

python is already the newest version (2.7.14-2ubuntu1).
Алайсдар Алвес
источник
Я обновил с 17.04 по 17.10 и столкнулся с тем же ImportError: cannot import name _remove_dead_weakref. Мой Питон 2.7.14
Csaba Toth
В моем случае я использую виртуальные среды и подозреваю, что питон внутри этих виртуальных сред теперь настолько не синхронизирован с версией системы, что возникает эта ошибка. Я подозреваю, что восстановление виртуальной среды с нуля может решить мою проблему, хотя было трудно установить все пакеты :(
Csaba Toth

Ответы:

26

Это не решение Ubuntu, но, поскольку этот вопрос часто встречается в результатах поиска, я хотел сказать, что у меня была эта ошибка в OSX, потому что мой системный Python по умолчанию был 2.7, и я заварил установленный "python @ 2", пока установка другого пакета.

Если вы работаете в OSX и используете homebrew, проверьте ваши пакеты, установленные с brew, запустив brew list, и если в этом списке появится «python @ 2», а Python 2.7 - это системный Python, вы можете удалить установленный пакет brew с помощьюbrew remove python@2 --ignore-dependencies

duhaime
источник
2
Это произошло после обновления brew, заменив многие пакеты новыми версиями пакета @ version ... Спасибо!
Хьюго Х
2
Это помогло мне. При работе swiftна Mac я получил вышеупомянутые ошибки. Оказалось, это потому, что он использовал python2 от brew. Удаление исправило мою проблему.
Jmurphyau
2
Спасибо за это. Это помогло решить мое lldbпредупреждение.
Стивен Хептинг
Спасибо за внимание. Я только что обновил свои символические ссылки в / usr / local / bin / python, чтобы они указывали на последний Python Homebrew, а не на системный python
matt
9

В случае, если вы использовали виртуальную среду, вам нужно ее заново создать. Другая возможность заключается в том, что вы используете какую-то версию Python, основанную на исходной или боковой установке, которая конфликтует с системной. В этом случае вы должны разобраться, что правильные папки и пути настроены из различных сред.

Чаба Тот
источник
3

В моем случае это была ошибка, связанная с виртуальной средой. Итак, создание новой виртуальной среды работало для меня. Вот список команд, которые могут вам в этом помочь.

Установка виртуальной среды:

pip install virtualenv

Создание новой виртуальной среды:

virtualenv -p {env_name}

Активация виртуальной среды:

source env_name/bin/activate

Деактивация вашего виртуального окружения:

deactivate
Abhinav1602
источник
ОП не упоминает виртуальную среду, поэтому ваш ответ не решает проблему, когда виртуальная среда не используется.
MikeM