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. Мій Python - 2.7.14
Csaba Toth,

У моєму випадку я використовую віртуальне середовище, і я підозрюю, що python у цих віртуальних середовищах зараз не синхронізований з версією системи настільки, що ця помилка виникає. Я підозрюю, що перебудова віртуального середовища з нуля може вирішити мою проблему, хоча за встановлення всіх пакетів було проблемою :(
Csaba Toth

Відповіді:


26

Це не рішення Ubuntu, але, оскільки це запитання виявляється високо в результатах пошуку помилки, я хотів сказати, що у мене була помилка в OSX, оскільки моя система Python за замовчуванням була 2,7, і я встановив "python @ 2" встановлення іншого пакету.

Якщо ви перебуваєте на OSX і використовуєте домашню мову, перевірте, чи встановлено пакунки, встановлені завареною системою, запустівши brew list, і якщо в цьому списку відображається "python @ 2", а Python 2.7 - ваш системний Python, ви можете видалити встановлений варіонний пакет за допомогоюbrew remove python@2 --ignore-dependencies


2
Це сталося після того, як оновлення варіння замінило багато пакунків своїм пакетом @ версією нового ... Дякую!
Хьюго

2
Це мені допомогло. Під час роботи swiftна Mac я отримав вищезгадані помилки. Виявилося це тому, що він використовував python2 від brew. Видалення його вирішило мою проблему.
jmurphyau

2
Дякую за це Це допомогло вирішити моє lldbпопередження.
Стівен Хептінг

Дякую за голову вгору Я щойно оновив свої посилання в / usr / local / bin / python, щоб вказати на останній Homebrew python, а не на системний python
matt

9

Якщо ви використовували віртуальне середовище, вам потрібно буде його створити заново. Інша можливість полягає в тому, що ви використовуєте якусь джерельну або боково встановлену версію python, яка стикається з системною. У такому випадку вам слід розібратися, що правильні папки та контури налаштовані, виглядали з різних середовищ.


3

У моєму випадку це була помилка, пов’язана з віртуальним середовищем. Отже, створення нового віртуального середовища працювало для мене. Ось список команд, які можуть допомогти вам у тому ж.

Встановлення віртуального середовища:

pip install virtualenv

Створення нового віртуального середовища:

virtualenv -p {env_name}

Активація віртуального середовища:

source env_name/bin/activate

Дезактивація віртуального середовища:

deactivate

ОП не згадує про віртуальне оточення, тому ваша відповідь не стосується проблеми, коли віртуальна середовище не використовується.
MikeM
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.