Python 虚拟环境因升级到 Ubuntu 18.04 而损坏
Python virtual environments broken with upgrade to Ubuntu 18.04
我最近从 Ubuntu 16.04 LTS 升级到 18.04 LTS,使用提示和 GUI windows 以及 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。
有没有人遇到过这个?这个特定错误是什么?恢复虚拟环境功能的最佳解决方案是什么?
已通过创建新的虚拟环境解决此问题。创建新 virtualenv
时安装的 Python 是 2.7.15,这可能是之前的问题。
创建新的虚拟环境并使用 pip
安装所有包后,我的项目特定脚本 运行 成功。如果你有一个 requirements.txt
文件,这很容易,如果没有,那就更乏味了!我强烈建议在 Ubuntu 升级之前为每个 virtualenv
创建一个 requirements.txt
。
我最近从 Ubuntu 16.04 LTS 升级到 18.04 LTS,使用提示和 GUI windows 以及 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。
有没有人遇到过这个?这个特定错误是什么?恢复虚拟环境功能的最佳解决方案是什么?
已通过创建新的虚拟环境解决此问题。创建新 virtualenv
时安装的 Python 是 2.7.15,这可能是之前的问题。
创建新的虚拟环境并使用 pip
安装所有包后,我的项目特定脚本 运行 成功。如果你有一个 requirements.txt
文件,这很容易,如果没有,那就更乏味了!我强烈建议在 Ubuntu 升级之前为每个 virtualenv
创建一个 requirements.txt
。