ImportError:无法导入名称 _remove_dead_weakref

ImportError:无法导入名称 _remove_dead_weakref

我尝试四处搜索,但未能找到好的解决方法或遇到此特定错误的人。

在我尝试使用 安装屏幕后发生了这种情况apt-get install screen

错误:

Setting up python3.6-minimal (3.6.1-1~14.04.york0) ...
Traceback (most recent call last):
  File "/usr/lib/python3.6/py_compile.py", line 6, in <module>
    import importlib._bootstrap_external
  File "/usr/lib/python3.6/importlib/__init__.py", line 57, in <module>
    import types
  File "/usr/lib/python3.6/types.py", line 171, in <module>
    import functools as _functools
  File "/usr/lib/python3.6/functools.py", line 23, in <module>
    from weakref import WeakKeyDictionary
  File "/usr/lib/python3.6/weakref.py", line 12, in <module>
    from _weakref import (
ImportError: cannot import name '_remove_dead_weakref'
dpkg: error processing package python3.6-minimal (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of python3.6:
 python3.6 depends on python3.6-minimal (= 3.6.1-1~14.04.york0); however:
  Package python3.6-minimal is not configured yet.

dpkg: error processing package python3.6 (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 python3.6-minimal
 python3.6
E: Sub-process /usr/bin/dpkg returned an error code (1)

运行 Ubuntu 14.04。

Screen 本身似乎已经安装到了最新版本,但错误消息仍然让我担心。

真的很茫然,非常感谢任何帮助。

答案1

我最近在 Ubuntu 16.10 上使用 Pycharm 2017.3.2 时遇到了这个问题。

我的设置是:

我从 Python PPA 安装了 Python 3.6。我有 Python 3.6.0b4。但是,我刚刚将 Ubuntu 升级到 17.04,但尚未重新启动。当我重新启动计算机时,它仍然抛出该错误。因此,我尝试python3.6在终端中查看默认值。

➜  ~ python3.6
Python 3.6.1 (default, Mar 22 2017, 06:17:05) 
[GCC 6.3.0 20170321] on linux
Type "help", "copyright", "credits" or "license" for more information.

因此,我意识到我的虚拟环境中的 Python 可能已经过时或指向错误的 Python 版本。

解决方案

  • 确保我安装了哪个版本的 Python 3.6(3.6.1)。
  • 删除了我的虚拟环境。
  • 使用 virtualenvwrapper 创建新的虚拟环境:mkvirtualenv --python=python3.6

  • 使用 pip 安装所需内容:pip install -r requirements.txt

答案2

升级到 Ubuntu 17.10 后发生了这种情况。我通过转到其文件夹并输入以下内容修复了我的 python 2.7 virtualenv:

virtualenv -p /usr/bin/python2.7 .

答案3

将 Ubuntu 升级到 17.10 后就发生了这种情况。

我尝试运行一个安装在 Python virtualenv 中的应用程序。

我这样修复了它:

cd my-virtualenv-directory
virtualenv . --system-site-packages

需要这个选项--system-site-packages是因为应用程序使用了 Ubuntu 的 python-gtk。我猜大多数情况下都不需要它。

现在ImportError: cannot import name _remove_dead_weakref已经消失了 :-)

答案4

我不知道为什么,但使用

python3 -m venv venv

代替

virtualenv -p python3 venv

然后激活 venv 或手动设置路径,如下所示

      export PYTHONPATH=.:\$PYTHONPATH
      VIRTUAL_ENV=`pwd`/venv
      export VIRTUAL_ENV
      PATH="\$VIRTUAL_ENV/bin:\$PATH"
      export PATH

对我有用。

我尝试快速搜索一下virtualenvpython3 -m venv模块之间的区别……但没有发现任何东西。

相关内容