„Kein Modul mit dem Namen _struct“ nach dem manuellen Erstellen und Installieren von Python 2.6

„Kein Modul mit dem Namen _struct“ nach dem manuellen Erstellen und Installieren von Python 2.6

Ich verwende Ubuntu 12.04 und hatte das übliche Python 2.7 installiert.

Ich brauchte Python 2.6, also lud ich die Quelle herunter und tat

./configure
make
sudo make install

Ein Fehler, da ich mein systemweites Python nicht ersetzen wollte. Nun funktionierten einige Programme nicht mehr, z. B. der Update-Manager mit

ImportError: No module named gi.repository

Ich habe Update-Alternatives verwendet, um Python 2.7 wieder als Standard festzulegen, aber viele Python-Anwendungen starten aufgrund einiger fehlender Module immer noch nicht.

Kann jemand einen Hinweis geben, was passiert ist und wie sich das Problem am besten beheben lässt?

Dank im Voraus.

Bearbeiten :

Ich konnte einige Funktionen von apt-get zum Laufen bringen, indem ich meinen eigenen Hardlink von /etc/python nach /etc/python2.7 gesetzt habe. (Ich schätze also, dass die Verwendung von Update-Alternativen auch nicht viel gebracht hat.) Ich habe ein dist-upgrade durchgeführt, was im Grunde funktioniert hat, aber ein Großteil der Paketverwaltung über apt-get ist immer noch defekt. Insbesondere einProblem mit Python-Minimalverhindert viele andere Installationen von Paketen, die ich durchführen wollte.

Setting up python-minimal (2.7.3-0ubuntu7) ...
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

PS: Erstellen von 2.7 aus der Quelleimmer beendet (auch vor dist-ugprade oder update-alternatives) mit

make: *** [libinstall] Error 1

Derzeit gibt es bei make weitere Probleme („Python-Build abgeschlossen, aber die zum Erstellen dieser Module erforderlichen Teile wurden nicht gefunden: _bsddb bsddb185 bz2
dl imageop sunaudiodev.
Um die erforderlichen Teile zu finden, suchen Sie in setup.py in detect_modules() nach dem Namen des Moduls.“)

Da mir das etwas zu hoch erscheint, bin ich vermutlich mit einer völlig neuen Installation besser dran.

Antwort1

Ich hatte ein ähnliches Problem, als ich kürzlich von Debian/Testing auf Debian/Stable heruntergestuft habe. Ich schätze, irgendwo im Prozess wurden Python-Module beschädigt. Das Bereinigen und Neuinstallieren von Python war, wie bereits erwähnt, etwas drakonisch. Glücklicherweise bin ich auf Folgendes gestoßen http://ubuntuforums.org/showthread.php?t=735693

Nach diesem Vorschlag habe ich den Befehl ausprobiert

for pkg in `dpkg --get-selections | egrep -v 'deinstall' | egrep python | awk '{print $1}'`; do  apt-get -y --force-yes install --reinstall $pkg ; done

alles neu zu installieren, was Python im Namen hat, und das hat das Problem gelöst.

Antwort2

Ihre Python 2.6-Installation hat wahrscheinlich viele Einstellungen und Pfade geändert.

Am besten installieren Sie den Standard-Python-Interpreter neu

sudo apt-get --reinstall install python python-support

Ich kann es nicht testen, aber ich hoffe, dass es funktioniert. Viel Glück.

Wenn das nicht funktioniert, bleibt mir nur die Idee, Python 2.7 aus der Quelle zu installieren und anschließend zu versuchen, die Standardversion erneut zu installieren.

Antwort3

Ich bin im Wesentlichen auf dasselbe Problem gestoßen, allerdings für Python-Minimal 2.7.11-1.

cat /var/lib/dpkg/info/python-minimal.postinst

Sie sollten ungefähr Folgendes erhalten:

#! /bin/sh
set -e

python2.7 -m compileall /usr/share/python/ >/dev/null

Führen Sie den Befehl ohne Umleitung zu >/dev/null aus (bearbeiten Sie die Datei oder: sudo python2.7 -m compileall /usr/share/python/). Dadurch wird angezeigt, wo die Konfiguration nach der Installation fehlschlägt.

Ex:

Listing /usr/share/python/penemue/lib/python2.7/site-packages/gevent 
Compiling /usr/share/python/penemue/lib/python2.7/site-packages/gevent/_socket3.py ...
  File "/usr/share/python/penemue/lib/python2.7/site-packages/gevent/_socket3.py", line 183
    def makefile(self, mode="r", buffering=None, *,
                                                  ^
SyntaxError: invalid syntax

In meinem Fall war es ein benutzerdefiniertes Python-Paket (erstellt mit dh-virtualenv), das unter /usr/share/python lag. Ich musste dpkg -P penemuedas Verzeichnis ausführen und letztendlich entfernen /usr/share/python/penemue. Vielleicht hätte ich das /usr/share/python/penemueVerzeichnis einfach aus dem Weg räumen können.

Nachdem ich den fehlerhaften Code entfernt hatte, sudo apt-get install -fwurden die Probleme durch Ausführen behoben.

Antwort4

Ich vermute, dass Sie das Standard-Python-Verzeichnis (irgendwie) versehentlich überschrieben haben und 2.6 nicht mit den Anforderungen des Update-Managers/der Apps kompatibel ist.

Versuchen Sie es sudo apt-get purge python2dann mit sudo apt-get install python2. Dadurch sollte Python von Ihrem System gelöscht und neu installiert werden, sodass es wieder zum Standard-Python wird.

Die einzige andere Idee ist, dass Sie eine schlechte Quelle für 2.6 haben und dies als solche eine schlechte Installation ergab, die nicht schlecht wargenugvon make erkannt werden???

verwandte Informationen