67 votes

Problème avec update-manager: Aucun module nommé 'apt_pkg' dans Ubuntu 13.10, après avoir installé Python 3.4 sur /usr/local/lib

Je suis plutôt nouveau sur Ubuntu et j'essaie de lancer update-manager 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 
    from gi.repository import Gtk
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 27, in  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 
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in 
import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in 
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 20, in 
import apt
File "/usr/lib/python3/dist-packages/apt/__init__.py", line 21, in 
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 
from gi.repository import Gtk
File "/usr/lib/python3/dist-packages/gi/__init__.py", line 27, in 
from ._gi import _API
ImportError: No module named 'gi._gi'

D'après ce que j'ai compris, il s'agit d'un problème lié au fait que je devrais avoir python3.4 installé. 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.

1voto

stann1 Points 111

J'ai rencontré le même problème après la mise à jour vers python 3.9, et j'ai recréé le lien symbolique '/usr/bin/python3' pour pointer vers le nouvel emplacement.

La seule solution qui a fonctionné pour moi était celle d'un commentaire sur la première réponse, de la part de @Kenivia : sudo apt remove --purge python3-apt puis sudo apt install python3-apt

Cela a résolu l'erreur mais a désinstallé mon Centre Logiciel Ubuntu. Ce n'était pas grave, car je l'ai simplement réinstallé avec sudo apt install ubuntu-software et tout semble fonctionner correctement maintenant.

EDIT : certains problèmes persistent malgré cela (update-manger continuait de donner des erreurs et ne démarrait pas). J'ai donc dû revenir en arrière et rétablir le lien symbolique /usr/bin/python3 pour pointer vers l'emplacement original de python3.6. Cela a résolu tout.

0voto

matthias2t Points 37

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

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

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

python3 -V

0voto

asad_hussain Points 103

J'ai rencontré le même problème après la mise à niveau d'Ubuntu 19 à Ubuntu 20. Dans ubuntu 20, la version python par défaut est 3.8 Mais certaines packages ne supportent pas cette version. Pour cela, j'ai rétrogradé la version python par défaut à 3.7 Après la rétrogradation, j'ai rencontré ce foutu problème.

Voici la documentation pour la rétrogradation : https://blog.nixarsoft.com/2020/06/04/ubuntu-20-and-old-python-versions/

Laissez-moi vous dire comment résoudre ce problème.

python3.8
Python 3.8.2 (par défaut, 27 avr. 2020, 15:53:34) 
[GCC 9.3.0] sur linux
Tapez "help", "copyright", "credits" ou "license" pour plus d'informations.
>>> import apt_pkg
>>> apt_pkg

>>> exit

Comme vous pouvez le voir, il y a un fichier ".so" pour apt_pkg et il est situé à "/usr/lib/python3/dist-packages/apt_pkg.cpython-38-x86_64-linux-gnu.so" Maintenant, si vous liez ce fichier à "/usr/lib/python3/dist-packages/apt_pkg.cpython-37-x86_64-linux-gnu.so" alors vous pourrez utiliser cette bibliothèque en python 3.7. Veuillez noter que j'ai changé "38" en "37" dans le fichier lié. Vous devez être root pour créer le lien.

sudo ln -s /usr/lib/python3/dist-packages/apt_pkg.cpython-38-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.cpython-37-x86_64-linux-gnu.so

Probablement vous pouvez utiliser la même méthode pour d'autres versions de python. Si vous changez 38 en 36 alors vous pourrez utiliser cette bibliothèque en python 3.6...

0voto

Tzahi Leh Points 251

J'ai essayé d'utiliser la réponse de @kodmanyagha, mais aucune apt_pkg n'a été trouvée dans l'environnement Python. J'ai résolu le problème grâce à la réponse de @saranjeet :

 /usr/lib/python3/dist-packages$ sudo cp apt_pkg.cpython-35m-x86_64-linux-gnu.so apt_pkg.so

0voto

Mansur Ul Hasan Points 271

Pour moi ci-dessous valait la peine

    mansoor@LDEVOPS-MANSOOR:~/Documents/clients/HR/DevopsSimulator$  cd /usr/lib/python3/dist-packages

    mansoor@LDEVOPS-MANSOOR:/usr/lib/python3/dist-packages$ sudo ln -s apt_pkg.cpython-38-x86_64-linux-gnu.so apt_pkg.so

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X