it-swarm.com.de

python-dev Installationsfehler: ImportError: Kein Modul mit dem Namen apt_pkg

Ich bin Debian-Benutzer und möchte python-dev installieren, aber wenn ich den Code in der Shell als root ausführen:

# aptitude install python-dev

Ich erhalte folgende Fehlermeldung:

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

Was scheint das Problem zu sein und wie kann ich es lösen?

36
Belphegor

Stellen Sie sicher, dass Sie über ein funktionierendes Python-apt-Paket verfügen. Sie können versuchen, das Paket erneut zu entfernen und zu installieren, um das Problem zu beheben, wenn apt_pkg.so nicht gefunden wurde.

apt-get install python-apt
37
Arnestig

Dieses Problem bin ich bei Sudo apt-get update aufgetreten. Mein Env ist Debian8 mit Python2.7 + 3.4 (Standard) + 3.5.

Der folgende Code erstellt nur eine apt_pkg....so-Datei für Python 3.5 neu

Sudo apt-get install python3-apt --reinstall

Der folgende Code hat mein Problem gelöst.

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

Daher überprüft python3-apt offensichtlich die höchste Python-Version anstelle der aktuell verwendeten Python-Version.

56
zhazha

Löse es so:

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

Oder:

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

Wenn Sie einen No such file or directory bekommen, brauchen Sie nur ls, um den richtigen Namen zu finden.

47
user8178061

Ich habe vor kurzem dasselbe Problem festgestellt, wenn ich ein Python 3.3.0-Skript in Aptana Studio mit Ubuntu Quantal ausführte. Abgesehen von dem Fehler des Skripts, an dem ich gerade arbeite, füge ich Folgendes hinzu:

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 4, 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'

Ich habe versucht, python3-apt zu entfernen, zu reinigen, zu löschen und erneut zu installieren, und ein bisschen herumzuschnüffeln, und ich habe festgestellt, dass der Fehler nur Python 3.3.0 betrifft. Beim Versuch, apt_pkg in IDLE zu importieren, wird derselbe Fehler angezeigt. Interessanterweise funktioniert das Importieren mit IDLE mit Python 3.2.3 einwandfrei. Außerdem haben beide Versionen von Python 3.x.x den gleichen /usr/lib/python3/dist-packages, und darin sind apt_pkg.cpython-32mu.so und apt_pkg.cpython-32dmu.so. Sind diese Dateien nicht mit Python 3.3.0 kompatibel?

Eine letzte Sache, wenn Sie das Skript außerhalb von Aptana Studio ausführen, wird der Fehler meines Skripts ohne die ImportError: No module named 'apt_pkg'-Nachricht angezeigt.

5
Roberto

Dies passierte mir unter Ubuntu 18.04.2, nachdem ich versucht hatte, Python3.7 von Deadsnakes Repo zu installieren.

Lösung war 1) cd/usr/lib/python3/dist-packages/2) Sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so

5
Mirror Mirage

Aus irgendeinem Grund fehlte meiner Installation apt_pkg.so im Verzeichnis python3 dist-packages. (apt_pkg.cpython-33m-x86_64-linux-gnu.so war da ?!), aber ich musste einen Symlink apt_pkg.so -> apt_pkg.cpython-33m-x86_64-linux-gnu.soin /usr/lib/python3/dist-packages machen

Ich bin nicht sicher, ob mein Upgrade fehlgeschlagen ist oder warum dies der Fall war. Es trat nach einem Upgrade-Versuch auf (Precise-> Raring-> Quantal-Upgrade).

4
Jamie Pate

Dieser Fehler tritt häufig auf, wenn eine neuere Version von Python neben einer älteren Version installiert wurde, z.

  • Ubuntu 18.04.1 wird mit Python-Version 3.6.6 geliefert 
  • Installiertes ppa: deadsnakes/python3.7.1 oder alternativ
  • Führen Sie einen Befehl aus, der das Modul apt_pkg verwendet, und erhalten Sie einen Fehler wie z.

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

Wenn wir eine nicht-distro-Version von python3 mit apt installieren, wird ein freigegebenes Modulverzeichnis als das von python3 festgelegt. Meistens wird es/usr/lib/python3 sein. 

Die meiste Zeit wird dies in Ordnung sein, aber in einigen Fällen hängen die verschiedenen Versionen von Python von anderen Bibliotheken oder gemeinsam genutzten Objekten/Bibliotheken ab. Bei den anderen Python-Versionen ist dies jedoch der Fall Python-Version. Wenn wir also Python3.6 auf einem 64-Bit-System installiert haben, wäre der apt_pkg .SO-Link 

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

Das Problem liegt jedoch in der Tatsache, dass bei der Installation einer neueren Python-Version der Link aktualisiert wird, um auf die neueste Python-Version zu verweisen, die dazu führt, dass der Fehler des Moduls apt_pkg nicht gefunden wird. Durch Überprüfen, welche Python-Version mit ausgeliefert wird Ihre Distribution können Sie den Link wie oben gezeigt erstellen .. oder wir verwenden eine Methode, um dem Befehl eine Auswahl an Python-Versionen anzubieten, um die .SO-Datei zu verlinken, z.

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

Da Python diese Verknüpfung zur neuesten installierten Python-Version erstellt, geben wir dem Befehl die Option, aus 3 Python-Versionen zu wählen, von denen die höchste Version ausgewählt wird.

3
Jamie Lindsey

Wenn Sie Python 3.5 verwenden, gehen Sie auf 3.4 zurück. Das ist der sicherste Schritt.

Unter /usr/lib/python3/dist-packages sehen Sie *34m*, den Python 3.5 nicht verwenden kann. zhazha antworten symbolisch darauf.

2
Pobe

Ein letzter Ausweg ist Sudo cp /usr/lib/python3/dist-packages/apt_pkg.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so Wenn der ln-Befehl zu viel für Sie ist oder irgendwie nicht funktioniert.

cp oben kann auch mv sein, wenn Sie nur eine Python-Version verwenden möchten.

1
Tong Niu

Zusätzlich zum Erstellen eines symbolischen Links für apt_pkg.so können Sie apt_inst.so auf dieselbe Weise wie apt_pkg.so erstellen.

ln -s apt_inst.cpython-35m-x86_64-linux-gnu.so apt_inst.so 
0
Jihwan Park

Bitte beheben Sie dies, indem Sie die Gebietsschema-Variablen festlegen:

export LC_ALL="en_US.UTF-8"

export LC_CTYPE="en_US.UTF-8"
0
rajendra sharma