ImportError: nie można zaimportować nazwy _remove_dead_weakref

25

Próbowałem szukać, ale nie udało mi się znaleźć dobrej poprawki ani nikogo innego z tym konkretnym błędem.

Zdarza się to po tym, jak spróbuję zainstalować ekran apt-get install screen.

Błąd:

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)

Uruchamianie Ubuntu 14.04.

Wygląda na to, że sam ekran został zainstalowany w najnowszej wersji, ale komunikat o błędzie nadal mnie martwi.

Naprawdę ze stratą tutaj każda pomoc jest bardzo ceniona.

antonlab
źródło
Jak dokładnie zainstalowałeś python3.6się 14.04?
steeldriver
@steeldriver jonathanf repository: askubuntu.com/questions/865554/…
antonlab
2
Może to problem z tym PPA?
steeldriver
@steeldriver Mogłem również zainstalować Python3.6 przy użyciu innej metody (myślę, że jest wywoływany ze źródła?), więc mogą występować konflikty. Próbuję dowiedzieć się, jak poprawnie zainstalować teraz,
antonlab,

Odpowiedzi:

16

Ostatnio natknąłem się na ten problem, gdy korzystałem z Pycharm 2017.3.2 na Ubuntu 16.10.

Moja konfiguracja to:

Zainstalowałem Python 3.6 z python PPA. Miałem Python 3.6.0b4. Jednak właśnie zaktualizowałem Ubuntu do wersji 17.04, ale jeszcze nie uruchomiłem się ponownie. Kiedy ponownie uruchomiłem komputer, nadal zgłaszał ten błąd. Dlatego próbowałem zobaczyć, jaka jest domyślna wartość python3.6w terminalu.

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

Dlatego zdałem sobie sprawę, że Python, który miałem w mojej virtualenv, może być nieaktualny lub wskazywać na niepoprawną wersję Pythona.

Rozwiązanie :

  • Upewnij się, którą wersję Pythona 3.6 zainstalowałem (3.6.1).
  • Usunąłem moje wirtualne środowisko.
  • Utworzono nowe środowisko wirtualne za pomocą virtualenvwrapper: mkvirtualenv --python=python3.6

  • Zainstalowałem wymagania z pipem: pip install -r requirements.txt

Hektron
źródło
Właśnie natknąłem się na to na innym laptopie, który leżałem. Te kroki pomogły rozwiązać moje problemy. : D
Hectron
9

Zdarzyło mi się po aktualizacji do Ubuntu 17.10. Naprawiłem mój virtualenv w Pythonie 2.7, przechodząc do jego folderu i wpisując:

virtualenv -p /usr/bin/python2.7 .
Ciske Boekelo
źródło
1
Dzięki, działało to również po aktualizacji z 16.04 do 18.04.
James Bradbury,
6

Zdarzyło mi się to po aktualizacji Ubuntu do wersji 17.10.

Próbowałem uruchomić aplikację zainstalowaną w Python virtualenv.

Naprawiłem to w następujący sposób:

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

Ta opcja --system-site-packagesbyła potrzebna, ponieważ aplikacja używa Python-gtk z Ubuntu. Myślę, że w większości innych przypadków nie jest to potrzebne.

Teraz ImportError: cannot import name _remove_dead_weakrefjuż nie ma :-)

guettli
źródło
1
Napotkałem ten problem po aktualizacji do 18.04 i ta poprawka również działała dla mnie bez konieczności ponownej instalacji żadnego z wirtualnych środowisk; Dziękuję Ci!
aspiring_sarge
4

Ostatnio natknąłem się na podobny problem (mój konkretny przypadek polegał na użyciu virtualenv po zaktualizowaniu instalacji systemu w języku Python). Według tego raportu o błędach Debiana wydaje się, że lokalna instalacja Pythona może zakłócać systemową. Ponieważ powiedziałeś, że zainstalowałeś Pythona ze źródła, prawdopodobnie jest to problem. Połączony raport o błędach sugeruje, że nie należy instalować Pythona w /usr/local(można zainstalować na innym prefiksie, używając --prefix=/some/other/directoryflagi do ./configure).

jonathanverner
źródło
Ciekawy. Nadal jestem całkiem nowy w Linuksie, ale zobaczę, co mogę z tego zrobić.
antonlab
Zainstalowałem minicondę w moim domu i na szczęście mogłem rozwiązać problem, otwierając nową powłokę po tej, w której ustawiłem minicondę.
Fred Schoen