Problème avec le gestionnaire de mise à jour: aucun module nommé 'apt_pkg' dans Ubuntu 13.10, après avoir installé Python 3.4 sur / usr / local / lib


29

Je suis plutôt nouveau sur Ubuntu et j'essaie d'exécuter le gestionnaire de mise à jour sur Ubuntu 13.10. Je reçois:

jacopo@jacopo-laptop:~$ update-manager 
Traceback (most recent call last):
  File "/usr/bin/update-manager", line 28, in <module>
    from gi.repository import Gtk
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 27, in <module> from ._gi import _API
ImportError: No module named 'gi._gi'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 64, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 20, in <module>
import apt
File "/usr/lib/python3/dist-packages/apt/__init__.py", line 21, in <module>
import apt_pkg
ImportError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
File "/usr/bin/update-manager", line 28, in <module>
from gi.repository import Gtk
File "/usr/lib/python3/dist-packages/gi/__init__.py", line 27, in <module>
from ._gi import _API
ImportError: No module named 'gi._gi'

Pour autant que j'ai compris, c'est un problème lié au fait que je devrais avoir installé python3.4. Je l'ai installé dans /usr/local/lib, mais j'obtiens toujours la même erreur. De cette façon, je ne peux même pas passer à Ubuntu 14.04.

Réponses:


32

Réinstallez en apt_pkgutilisant:

sudo apt-get install --reinstall python3-apt

L'erreur est principalement due à l' apt_pkg.cpython-35m-x86_64-linux-gnu.soabsence de bibliothèque dans /usr/lib/python3/dist-packages.

La suppression et la réinstallation devraient vous aider.


14
Il est presque toujours préférable de réinstaller le package en une seule étape sudo apt install --reinstall <package-name>, car cela évite de calculer et de supprimer les dépendances (et de marquer les packages pour suppression). Sachez que la suppression de packages n'est pas toujours une procédure réversible; par exemple, APT se supprimera lui-même ou ses dépendances si on le lui demande! Le --reinstalldrapeau est donc beaucoup plus sûr que removesuivi install. La removecommande en elle-même ne supprime pas les fichiers de configuration d'un package et n'a donc aucun avantage sur install --reinstall.
Zanna

4
Cette réponse devrait être mise à jour avec la suggestion de @Zanna, la suppression de python3-apt supprimera une tonne de dépendances et peut effrayer la merde de quelqu'un, sans parler de gâcher leur système.
alkanen

Désinstallez donc apt-package avec à la sudo dpkg -r --force-depends apt-packageplace qui désinstalle uniquement apt-package mais pas ses dépendances.
karel

12

pour moi, les étapes suivantes ont fonctionné:

cd /usr/lib/python3/dist-packages
sudo ln -s apt_pkg.cpython-{35m,34m}-x86_64-linux-gnu.so

la solution d'origine est ici: /programming/13708180/python-dev-installation-error-importerror-no-module-named-apt-pkg/36232975#36232975


1
Comme mentionné dans un commentaire sur à la « solution originale, » pour moi cela a fonctionné: sudo ln -s apt_pkg.cpython-{35m,36m}-x86_64-linux-gnu.so. La version 35(python 3.5) est celle qui est installée quelle que soit la sous-version particulière de python 3.x que vous exécutez. Merci!
fwc

6
update-alternatives  --set python3  /usr/bin/python3.6

3
La mise à jour des alternatives pour python peut parfois casser des choses.
Kulfy

1
J'ai utilisé update-alternatives --set python3 /usr/bin/python3.5et cela a fonctionné. python3 pointait déjà python3.6sur mon système.
Desik

2

Si vous essayez de mettre à niveau 13.10 vers 14.04, essayez de suivre ces instructions . Si vous essayez simplement de mettre à jour votre système actuel à partir de la ligne de commande, ouvrez un terminal et tapez ce qui suit:

sudo apt-get update
sudo apt-get dist-upgrade

Merci. J'avais déjà essayé mais ça n'a pas marché. J'ai essayé une fois de plus maintenant, obtenant, après la mise à jour d'apt-get, l'avertissement W: Impossible de récupérer bzip2: /var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_saucy-updates_main_source_Sources Hash Sum mismatch
user291925

K - vous avez un problème avec les sources de mise à jour. J'ai vu plusieurs discussions sur la façon de résoudre ce problème Le lien suivant semble être un bon match pour votre question askubuntu.com/questions/41605/…
Charles Green

Merci! J'ai essayé, mais j'obtiens toujours la même erreur lors de l'exécutionupdate-manager
user291925

K - que sur épuise mes possibilités sans une recherche Web plus approfondie. Bonne chance!
Charles Green

2

J'ai réussi à résoudre ce problème en copiant apt_pkg.cpython-34m-i386-linux-gnu.soà /usr/lib/python3/dist-packages/partir d' un autre bureau exécutant Ubuntu 14.04 LTS. J'ai essayé presque toutes les possibilités trouvées sur Internet, comme purger l'installation de python, puis réinstaller, nettoyer les fichiers de mise à niveau cassés, etc., mais j'ai échoué.


1

Juste au cas où cela en aiderait un autre, j'ai finalement résolu ce problème, qui était apparemment causé par des conflits de version python, en redirigeant le lien python3, puis en le redirigeant vers la bonne version python:

sudo rm /usr/bin/python3
sudo ln -s /usr/bin/python3.4

Vous devrez peut-être entrer la version correcte de python, trouvée avec

python3 -V

Vous avez donc supprimé une version pour 3.4?
IggyPass

J'ai essayé cela, et l'a trouvé pour rendre les choses pires . Je ne peux pas recommander.
MERose

1

Juste un conseil: j'évite d'installer "mon" python sur / usr / local, mais j'ai un répertoire dédié par version python (par exemple dans / opt) et j'utilise des environnements virtuels sur mon compte utilisateur pour utiliser le python dont j'ai besoin, qui est activé par mon .profile

Par cette approche, vous éviterez toujours de modifier la configuration et les dépendances attendues du système python.

Eh bien, je sais, il est trop tard pour votre cas, mais ...


1

Le problème pour moi est que j'ai installé python3.7 à côté de python3.6 et en ai fait la valeur par défaut.

J'exécute manuellement la commande suivante:

ln -s /usr/bin/python3.6  /usr/bin/python3

donc python3 pointe maintenant vers la version correcte de python ... qui résout le problème.


1
Je suis également confronté au problème parce que j'ai mis à jour vers python3.7 dans Ubuntu 18. Mais quand j'ai fait ce que vous avez fait (créer un lien symbolique), j'ai compris ln: failed to create symbolic link '/usr/bin/python3': File exists. Si je fais lsdans mon /usr/bin/python*, j'ai python3, python3.6, python3.6m, python3.7,python3.7m et python3m. Si je le fais sudo update-alternatives --config python3, je l'ai *0 /usr/bin/python3.7 2 auto mode, 1 /usr/bin/python3.6 1 manual modeet 2 /usr/bin/python3.7 2 manual mode. Je vous remercie.
user1330974

il se peut que vous deviez supprimer un fichier de lien déjà existant ou le renommer en .old et créer votre propre lien.
M.Hefny

@ user1330974 avez-vous finalement résolu le problème? Je suis confronté au même problème
dallonsi

1
@ user1330974 apparemment, le simple fait de forcer le lien symbolique a fonctionné:ln -sf /usr/bin/python3.6 /usr/bin/python3
dallonsi

1
@dallonsi Merci. Je ne l'ai pas approfondi, mais je vais utiliser votre approche. :)
user1330974
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.