«ImportError: aucun module nommé _struct» configuration de python-minimal

10

Lorsque je cours sudo apt-get upgrade, l'erreur dpkg apparaît et interrompt le processus.

Détails de l'erreur:

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.

Et ce problème entraîne une série de problèmes de dépendance lors du traitement des packages suivants:

 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

Enfin, je ne peux rien faire pour ce problème. Et plusieurs jours plus tard, le répertoire racine est plein et je n'ai même pas pu désinstaller de logiciel à cause de ce problème.

Java Xu
la source
possible dupliqué de askubuntu.com/q/270011/169736
Braiam
@Braiam, j'ai déjà trouvé cette question. Les réponses sont suggérées pour réinstaller python. J'ai essayé et échoué. Merci quand même!
Java Xu
sudo apt-get clean aide à récupérer de l'espace
frlan
J'ai changé mon /usr/bin/pythonlien symbolique pour pointer vers python3.5et cela a causé une erreur très similaire à cela. Je ne sais pas pourquoi, probablement à python2.7cause d' avoir déjà des dépôts qui se sont cassés quand j'ai changé le lien symbolique sans avertissement. IDK, laissant cela ici pour les futurs voyageurs
quietContest

Réponses:

1

OK, en parcourant les packages, j'ai trouvé que python-minimal n'a pas struct.py, mais python-minimal2.7 en a.

Alors, essayez ceci et voyez si cela vous aide:

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

Si même cela ne fonctionne pas, votre $ PYTHONPATH est peut-être foiré d'une manière ou d'une autre.

nano ~/.bashrc

Ajoutez la ligne export PYTHONPATH="${PYTHONPATH}:/usr/lib/python2.7"puis

source ~/.bashrc

Et essayez à nouveau votre mise à jour.

Chuck R
la source
édité pour ajouter "export", c'est un peu nécessaire;)
Chuck R
Il indique "Impossible de localiser le paquet python-minimal2.7". Voulez-vous dire python2.7-minimal? Lorsque j'essaie de réinstaller python2.7-minimal, le même problème de dépendance se produit.
Java Xu
Hmm, désolé, il m'a fallu si longtemps pour vous répondre. Essayez sudo apt-get clean sudo apt-get update sudo apt-get upgrade.
Chuck R
1
J'ai peur que ça ne marche pas. Après clean, updateet upgrade, j'essaye de réinstaller python2.7-minimal, mais le même problème de dépendance apparaît et reinstalléchoue à nouveau.
Java Xu
On dirait que j'avais tort sur quel paquet. c'est en fait libpython2.7-minimal qui contient struct.py. Assurez-vous qu'il est installé. Quelle est la version actuelle de python2.7-minimal que vous avez installée? Astuce:dpkg -l | grep python2.7-minimal
Chuck R
1

Essaye ça

sudo apt purge libpython*

J'ai supprimé python2.7 et 3.7, puis supprimé les fichiers associés du système. Après cela, j'ai trouvé que je ne pouvais pas réinstaller python2.7 J'ai essayé de nombreuses méthodes qui ne fonctionnaient toujours pas, notamment:

supprimer les liens logiciels

del virtual env dirs

supprimer automatiquement

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

Ensuite, j'ai trouvé des fichiers libpython en recherchant l'ensemble du système python (ne pas rm les fichiers du répertoire si vous n'êtes pas sûr) libpython*.

J'espère que cela peut aider certaines personnes à rencontrer les mêmes problèmes

Geai
la source
0

Je ne sais pas si cela va vous aider du tout, c'est un peu un coup de couteau dans le noir, mais assurez-vous que votre version Python par défaut est définie sur 2.7.

Il y a trois fichiers préoccupants dans / usr / bin:

python (symlink)
python2.7
python3 (symlink)

Si vous le faites, ls -l /usr/bin | grep pythonvous verrez à quoi pointe chaque lien symbolique.

Si cela vous montre python -> python3ou python -> python3.3qu'il y a quelque chose de mal. À ce stade, vous voudrez:

rm /usr/bin/python
ln -s /usr/bin/python2.7 /usr/bin/python
Chuck R
la source
Merci pour votre réponse. Dans mon /usr/bin, pythonest lié à python2.7.
Java Xu du
Pourquoi est-ce? J'avais changé mon lien symbolique pour pointer vers python3.5, et cela a bouleversé une énorme quantité de paquets python et aptaussi. Pourquoi ne puis-je pas utiliser par défaut Python3? Quelle est la bonne façon?
quietContest