„ImportError: Brak modułu o nazwie _struct” konfigurujący minimalny python

10

Po uruchomieniu sudo apt-get upgradepojawia się błąd dpkg i przerywa proces.

Szczegóły błędu:

Setting up python-minimal (2.7.3-0ubuntu7.1) ...
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/local/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/lib/python2.7/compileall.py", line 16, in <module>
    import struct
  File "/usr/local/lib/python2.7/struct.py", line 1, in <module>
    from _struct import *
ImportError: No module named _struct
dpkg: error processing python-minimal (--configure):
 subprocess installed post-installation script returned error exit status 255
dpkg: dependency problems prevent configuration of python:
 python depends on python-minimal (= 2.7.3-0ubuntu7.1); however:
  Package python-minimal is not configured yet.

Problem ten prowadzi do szeregu problemów związanych z zależnościami podczas przetwarzania następujących pakietów:

 python
 gwibber-service
 libgwibber3
 libgwibber-gtk3
 gwibber
 gwibber-service-facebook
 gwibber-service-identica
 gwibber-service-twitter
 python-all
 python-dev
 python-all-dev
 python-apt
 python-problem-report
 python-apport
 python-libxml2
 unity-lens-gwibber
 unity-scope-video-remote

Wreszcie nic nie mogę zrobić z tym problemem. A kilka dni później katalog główny jest pełny i nawet nie mogłem odinstalować żadnego oprogramowania z powodu tego problemu.

Java Xu
źródło
możliwe zduplikowanie askubuntu.com/q/270011/169736
Braiam
@Braiam, już znalazłem to pytanie. Odpowiedzi sugerowane są do ponownej instalacji Pythona. Próbowałem i nie udało mi się. W każdym razie dzięki!
Java Xu
sudo apt-get clean pomaga odzyskać trochę miejsca
frlan
Zmieniłem moje /usr/bin/pythondowiązanie symboliczne, aby wskazywało, python3.5i spowodowało to bardzo podobny błąd do tego. Nie jestem pewien, dlaczego, prawdopodobnie ma to związek z tym, python2.7że już zdążyłem zepsuć się, gdy zmieniłem dowiązanie symboliczne bez ostrzeżenia. IDK, pozostawiając to tutaj dla przyszłych podróżników
quietContest

Odpowiedzi:

1

OK, przeglądając pakiety, zauważyłem, że python-minimal nie ma struct.py, ale python-minimal2.7 ma.

Wypróbuj to i sprawdź, czy to ci pomoże:

sudo apt-get install --reinstall python2.7-minimal
sudo apt-get upgrade

Jeśli nawet to nie zadziała, być może twój $ PYTHONPATH jest w jakiś sposób pomieszany.

nano ~/.bashrc

export PYTHONPATH="${PYTHONPATH}:/usr/lib/python2.7"Następnie dodaj linię

source ~/.bashrc

I spróbuj jeszcze raz swojej aktualizacji.

Chuck R.
źródło
edytowane w celu dodania „eksportu”, jest to trochę konieczne;)
Chuck R
Mówi „Nie można znaleźć pakietu python-minimal2.7”. Masz na myśli python2.7-minimal? Kiedy próbuję ponownie zainstalować Python2.7-minimal, pojawia się ten sam problem zależności.
Java Xu,
Hmm, przepraszam, że tyle czasu zajęło mi dotarcie do ciebie. Spróbować sudo apt-get clean sudo apt-get update sudo apt-get upgrade.
Chuck R
1
Obawiam się, że to nie działa. Po clean, updatea upgradenastępnie próbuję ponownie zainstalować python2.7-minimal, ale pojawia się ten sam problem zależności i błąd reinstallponownie.
Java Xu
Wygląda na to, że się myliłem co do tego, która paczka. w rzeczywistości jest to libpython2.7-minimal, który zawiera struct.py. Upewnij się, że jest zainstalowany. Jaka jest aktualna wersja Python2.7-minimal, którą zainstalowałeś? Wskazówka:dpkg -l | grep python2.7-minimal
Chuck R
1

Spróbuj tego

sudo apt purge libpython*

Usunąłem python2.7 i 3.7, a następnie usunąłem powiązane pliki z systemu. Po tym stwierdziłem, że nie mogę ponownie zainstalować Python2.7 Próbowałem wielu metod, które nadal nie działają, w tym:

usuń miękkie linki

del virtual env dirs

autorove

sudo dpkg --purge `dpkg --get-selections | grep deinstall | cut -f1`

Następnie znalazłem kilka plików libpython, przeszukując cały system w języku Python (nie masz rm plików z katalogu, jeśli nie jesteś pewien). Po usunięciu libpython*pakietów (usunąłem je jeden po drugim), Python został zainstalowany pomyślnie.

Mam nadzieję, że może to pomóc niektórym ludziom mieć takie same problemy

Sójka
źródło
0

Nie wiem, czy to ci w ogóle pomoże, to trochę kłopoty w ciemności, ale upewnij się, że domyślna wersja Pythona jest ustawiona na 2.7.

W katalogu / usr / bin znajdują się trzy ważne pliki:

python (symlink)
python2.7
python3 (symlink)

Jeśli to zrobisz ls -l /usr/bin | grep python, zobaczysz, na co wskazuje każde dowiązanie symboliczne.

Jeśli to pokazuje python -> python3lub python -> python3.3coś jest nie tak. W tym momencie będziesz chciał:

rm /usr/bin/python
ln -s /usr/bin/python2.7 /usr/bin/python
Chuck R.
źródło
Dzięki za odpowiedź. W moim /usr/bin, pythonjest miękki związana python2.7.
Java Xu,
Dlaczego to? Zmieniłem moje dowiązanie symboliczne, aby wskazywało python3.5, i zniszczyło ogromną liczbę pakietów Pythona, a apttakże. Dlaczego nie mogę domyślnie używać Python3? Jaka jest właściwa droga?
quietContest