web-dev-qa-db-fra.com

ImportError: impossible d'importer le nom _remove_dead_weakref

J'ai essayé de faire des recherches, mais je n'ai pas réussi à trouver une solution satisfaisante ni à quiconque ayant cette erreur spécifique.

Cela se produit après que j'essaye d'installer screen avec apt-get install screen.

Erreur:

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)

Utiliser Ubuntu 14.04.

Screen lui-même semble avoir installé sa dernière version, mais le message d'erreur m'inquiète toujours.

Vraiment désemparée, toute aide est grandement appréciée.

22
antonlab

J'ai récemment rencontré ce problème lorsque j'utilisais Pycharm 2017.3.2 sur Ubuntu 16.10.

Ma configuration était:

J'ai installé Python 3.6 à partir de python PPA. J'avais Python 3.6.0b4. Cependant, je venais de mettre à jour Ubuntu vers 17.04, mais je n’avais pas encore redémarré. Lorsque j'ai redémarré mon ordinateur, cette erreur était toujours générée. Par conséquent, j'ai essayé de voir quelle était la valeur par défaut python3.6 dans le terminal.

➜  ~ 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.

Par conséquent, je me suis rendu compte que le Python que j'avais dans virtualenv était peut-être obsolète ou indiquait une version incorrecte Python.

Solution:

  • Assurez-vous quelle version de Python 3.6 j'avais installé (3.6.1).
  • Suppression de mon environnement virtuel.
  • Création d'un nouvel environnement virtuel à l'aide de virtualenvwrapper: mkvirtualenv --python=python3.6

  • Installé les exigences avec pip: pip install -r requirements.txt

16
Hectron

M'est arrivé après la mise à niveau vers Ubuntu 17.10. J'ai corrigé mon virtualenv python 2.7 en allant dans son dossier et en entrant:

virtualenv -p /usr/bin/python2.7 .
8
Ciske Boekelo

Cela m'est arrivé après la mise à niveau d'Ubuntu vers 17.10.

J'ai essayé de lancer une application installée dans un Python virtualenv.

Je l'ai corrigé comme ceci:

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

L'option --system-site-packages était nécessaire car l'application utilise python-gtk d'Ubuntu. Je pense que dans la plupart des autres cas, ce n'est pas nécessaire.

ImportError: cannot import name _remove_dead_weakref est maintenant parti :-)

5
guettli

J'ai récemment rencontré un problème similaire (mon cas spécifique était d'utiliser virtualenv après la mise à jour de l'installation système python). D'après ce rapport rapport de bogue Debian , il semble qu'une installation locale de python puisse interférer avec celle du système. Comme vous avez dit que vous avez installé python depuis le source, c'est probablement le problème. Le rapport de bogue lié suggère de ne pas installer python dans /usr/local (vous pouvez installer un préfixe différent en utilisant l'indicateur --prefix=/some/other/directory en ./configure).

4
jonathanverner