Python-Module können nur bei bestimmten Benutzern nicht importiert werden

Python-Module können nur bei bestimmten Benutzern nicht importiert werden

Ich versuche schon seit Ewigkeiten, das herauszufinden.

Wenn ich bestimmte Python-Programme ausführe, stürzen sie ab und sagen, dass bestimmte Module nicht importiert werden können, obwohl sie eigentlich installiert sind und importiert werden sollten. Zum Beispiel:

  • pip3würde abstürzen mitImportError: cannot import name 'HTTPSHandler
  • python2 speedtest-climitImportError: No module named expat; use SimpleXMLTreeBuilder instead
  • python3 speedtest-climitImportError: cannot import name 'HTTPSConnection'
  • virtualenv -p python3 myenvmitOSError: Command /home/myuser/myenv/bin/python3 -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip failed with error code 1

Das Bizarre ist, dass diese Programme sudoeinwandfrei funktionieren, wenn ich sie mit einem neuen normalen Benutzer oder sogar als solchen ausführe. Das passiert nur bei diesem bestimmten Benutzer.

Ich habe versucht .cache, alles zu löschen .pipund .python-eggsim Home-Verzeichnis chmod a+rx -R /usr/alle ausführbaren Python-Dateien mit whichdenen der aktiven Benutzer zu vergleichen, aber nichts hilft. Die Python- sys.pathListe ist auch identisch.

Die Maschine ist – Ubuntu Server 14.04 x64.

AKTUALISIEREN:

Ich glaube, ich habe es repariert ... aber keine Ahnung wie. Ich habe alles getan, was ich in dieser Frage aufgelistet habe, und den Computer neu gestartet.

EIN WEITERES UPDATE:

Ich habe herausgefunden, was die Ursache war. Ich hatte es export LD_LIBRARY_PATH="/usr/lib/plexmediaserver"in meinem .bashrc. Könnte mir aber bitte jemand erklären, warum das passiert?

Wenn ich das mache, gibt es keine Ergebnisse echo $LD_LIBRARY_PATH. Aber wenn ich es ausführe, export LD_LIBRARY_PATH="/usr/lib/plexmediaserver"bricht es einige Python-Importe ab.

Antwort1

Gelöst.

Ich hatte export LD_LIBRARY_PATH="/usr/lib/plexmediaserver"in meinem .bashrc.

/usr/lib/plexmediaserverhatte viele dynamische Bibliotheken, darunter libssl.so.1.0.0und libexpat.so.1. Daher wurden diese anstelle der Bibliotheken von geladen /usr/libund verursachten Probleme. Dieses Problem hat eigentlich nichts mit Python zu tun, es würde auch bei jedem anderen Programm, das auf diese Bibliotheken angewiesen ist, Probleme verursachen.

@slm hat eine gute Methode zum Debuggen solcher Fälle vorgeschlagen strace. In meinem Fall habe ich das gemacht strace speedtest 2>&1 | grep expat | lessund Beweise dafür gefunden, dass die falsche Bibliothek geladen wurde - open("/usr/lib/plexmediaserver/libexpat.so.1", O_RDONLY|O_CLOEXEC) = 7.

Ich habe im Internet viele Leute gesehen, die ähnliche Fragen gestellt haben, für die es überhaupt keine Lösung gab. Hoffentlich hilft das jemandem.

verwandte Informationen