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

Answers:


26

这不是Ubuntu解决方案,但是因为该问题在错误的搜索结果中显示很高,所以我想说我在OSX上遇到此错误,因为我的默认系统Python为2.7,并且brew在安装时安装了“ python @ 2”安装另一个软件包。

如果您在OSX上并且正在使用自制软件,请通过运行来检查安装了brew的软件包brew list,如果该列表中显示“ python @ 2”,并且Python 2.7是您的系统Python,则可以使用以下命令删除brew安装的软件包brew remove python@2 --ignore-dependencies


2
这是在Brew升级后发生的,将许多软件包替换为他们的package @ version新软件包...谢谢!
雨果H

2
这对我有帮助。swift在Mac上运行时,出现上述错误。原来是因为它使用了brew中的python2。删除它解决了我的问题。
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

OP没有提及虚拟环境,因此当不使用虚拟环境时,您的回答无法解决问题。
MikeM
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.