162 votes

erreur d'installation de python-dev : ImportError : Aucun module nommé apt_pkg

Je suis un utilisateur Debian, et je veux installer python-dev, mais lorsque j'exécute le code dans le shell en tant que Root :

# aptitude install python-dev

Je reçois l'erreur suivante :

Traceback (most recent call last):       
  File "/usr/bin/apt-listchanges", line 28, in <module>
    import apt_pkg
ImportError: No module named apt_pkg

Quel semble être le problème et comment puis-je le résoudre ?

214voto

zhazha Points 2114

J'ai rencontré ce problème en faisant sudo apt-get update . Mon environnement est debian8, avec python2.7 + 3.4(default) + 3.5.

Le code suivant ne fera que recréer un fichier apt_pkg....so fichier pour python 3.5

sudo apt-get install python3-apt --reinstall

Le code suivant a résolu mon problème,

cd /usr/lib/python3/dist-packages
sudo ln -s apt_pkg.cpython-{your-version-number}-x86_64-linux-gnu.so apt_pkg.so

Remplacer {your-version-number} de manière appropriée.

ATTENTION ce qui suit créera un lien symbolique de apt_pkg37m vers apt_pkg36m. assurez-vous que vous créez un lien vers la bonne version, ou du moins vers une version existante. por ll apt_pkg.cpython-* et voyez lequel ou lesquels vous avez installés.

sudo ln -s apt_pkg.cpython-{36m,37m}-x86_64-linux-gnu.so

Donc, évidemment, python3-apt vérifie la plus haute version de python, au lieu de la version actuelle de python utilisée.

165voto

user8178061 Points 1481

Résolvez-le par ceci :

cd /usr/lib/python3/dist-packages
cp apt_pkg.cpython-34m-i386-linux-gnu.so apt_pkg.so

Ou :

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

En gros, si vous obtenez un No such file or directory juste ls pour essayer d'obtenir le bon nom.

98voto

Mirror Mirage Points 917

Cela m'est arrivé sur Ubuntu 18.04.2 après avoir essayé d'installer Python3.7 à partir du dépôt deadsnakes.

La solution était la suivante

1) cd /usr/lib/python3/dist-packages/

2) sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so

76voto

Arnestig Points 1015

Assurez-vous que vous avez un paquet python-apt fonctionnel. Vous pouvez essayer de supprimer et d'installer à nouveau ce paquet pour résoudre le problème de non localisation de apt_pkg.so.

apt-get install python-apt

31voto

Jack Herer Points 391

Cette erreur se produit souvent lorsqu'une version plus récente de python a été installée à côté d'une version plus ancienne, par exemple ;

  • Ubuntu 18.04.1 est livré avec la version 3.6.6 de python.
  • Installé ppa:deadsnakes/python3.7.1 ou une alternative
  • Exécutez une commande qui utilise le module apt_pkg et obtenez une erreur telle que ;

        from CommandNotFound.db.db import SqliteDatabase
    File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 5, in <module>
        import apt_pkg

Lorsque nous installons une version non-distro de python3 avec apt, le répertoire des modules partagés sera celui de python3 ; le plus souvent, il s'agit de /usr/lib/python3 .

La plupart du temps, tout va bien, mais dans certaines circonstances, les différentes versions de python s'appuient sur des bibliothèques ou des objets partagés différents de ceux de l'autre version de python, donc comme d'autres réponses l'ont souligné, nous devons lier le .SO à la bonne version de python. Ainsi, si nous avons installé python3.6 sur un système 64 bits, le lien apt_pkg .SO sera le suivant

sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so

Mais le problème réside dans le fait que lorsque nous installons une version plus récente de python, le lien sera mis à jour pour pointer vers la version la plus récente de python, ce qui conduit à l'erreur du module apt_pkg non trouvé. En vérifiant quelle version de python est livrée avec votre distro, vous pouvez créer le lien comme indiqué ci-dessus. Ou bien nous utilisons une méthode qui offre à la commande un choix de versions de python pour lier le .SO, par exemple ;

sudo ln -s apt_pkg.cpython-{36m,35m,34m}-x86_64-linux-gnu.so apt_pkg.so

Comme python créera ce lien vers la dernière version installée de python, nous donnons à la commande l'option de choisir entre 3 versions de python, parmi lesquelles elle choisira la plus haute version donnée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X