升级到Ubuntu 18.04破坏了Python虚拟环境

时间:2018-09-07 22:47:23

标签: python virtualenv ubuntu-18.04

我最近从Ubuntu 16.04 LTS升级到18.04 LTS,使用提示和GUI窗口以及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。

还有其他人遇到过吗?这个特殊错误是什么?重新获得虚拟环境功能的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:-1)

此问题已通过创建新的虚拟环境解决。创建新的virtualenv时,安装的Python是2.7.15,这以前可能是问题所在。

创建新的虚拟环境并使用pip安装所有软件包之后,我的项目特定脚本成功运行。如果您有requirements.txt文件,这很容易;如果没有,则更麻烦!我强烈建议在Ubuntu升级之前为每个requirements.txt创建一个virtualenv