Я недавно обновил Ubuntu 16.04 LTS до 18.04 LTS, используя подсказки и окна графического интерфейса с программой обновления программного обеспечения Ubuntu для завершения обновления.
До обновления у меня было несколько виртуальных сред (virtualenv
), в каждой из которых был установлен обширный набор пакетов Python.
Когда я активирую virtualenv
любые команды Python или import
операторы, получается ImportError: cannot import name _remove_dead_weakref
. Например, pip freeze
приводит к:
$ pip freeze
Traceback (most recent call last):
File "/home/pwright/virtualenvs/btac-web-plots/bin/pip", line 7, in <module>
from pip._internal import main
File "/home/pwright/virtualenvs/btac-web-plots/local/lib/python2.7/site-packages/pip/_internal/__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 "/usr/lib/python2.7/weakref.py", line 14, in <module>
from _weakref import (
ImportError: cannot import name _remove_dead_weakref
Та же ошибка при попытке начать сеанс ipython
:
$ ipython
Traceback (most recent call last):
File "/home/pwright/virtualenvs/btac-web-plots/bin/ipython", line 7, in <module>
from IPython import start_ipython
File "/home/pwright/virtualenvs/btac-web-plots/local/lib/python2.7/site-packages/IPython/__init__.py", line 48, in <module>
from .core.application import Application
File "/home/pwright/virtualenvs/btac-web-plots/local/lib/python2.7/site-packages/IPython/core/application.py", line 16, in <module>
from copy import deepcopy
File "/usr/lib/python2.7/copy.py", line 52, in <module>
import weakref
File "/usr/lib/python2.7/weakref.py", line 14, in <module>
from _weakref import (
ImportError: cannot import name _remove_dead_weakref
В большинстве моих виртуальных сред есть Python 2.7.12, тогда как в моей системе Python 2.7.15.
Кто-нибудь еще сталкивался с этим? Что это за ошибка и каково мое лучшее решение для восстановления функциональности моих виртуальных сред?