Python: Ich kriege dauernd folgenden OSerror, wenn ich 'import open3d' mache, was soll ich tun?

2 Antworten

Dein Problem löst die Shared Library libGLdispatch.so.0 aus. Diese wurde mit GLIBC 2.34 kompiliert und nutzt auch Funktionen von dieser Version. Wenn die Abhängigkeit (in der Version) nicht gefunden wurde, gibt es den Fehler.

Dein Import im Python Code möchte die besagte Shared Library nutzen und lädt intern weitere Dependencies wie glibc.

ldd -v /.singularity.d/libs/libGLdispatch.so.0

Mit dem Befehl kannst du die Dependencies mit glibc Version anzeigen lassen. Du kannst alternativ auch anderen Executables bzw. Shared Libraries angegeben.

Zum Lösen des Problem kannst du zu einen das Betriebssystem mit der bereitgestellten glibc Version aktualisieren. Alternativ gibt es vielleicht auch andere Builds der Shared Library, die auch mit älteren glibc Versionen klar kommt. In beiden Fällen ist ein neues/anderes Container Image notwendig.

Falls es ein öffentliches Container Image mit allen Abhängigkeiten ist, hilft vielleicht schon ein andere Tag (Version vom Image). Ansonsten solltest du dich an den Maintainer vom Image wenden (Du? deine Uni?) oder es mit vorhandenen Source Code (Dockerfile) selber lösen.

Bezüglich GPU Unterstützung kann es gut sein, dass dies andere Shared Library Dependencies voraussetzt. Ohne GPU wird diese eventuell gar nicht geladen und es gibt auch kein Fehler. Der CPU Weg läuft dann dementsprechend ohne Probleme.

Mit deinem lokalen Ausführen könnte es eventuell am GPU Support liegen. Nutzt bei dir lokal die GPU? Auch wenn du die GPU nutzen möchtest, hast du das erfolgreiche Docker + GPU Setup überprüft? Wenn die GPU nicht korrekt im Container ist, wird wahrscheinlich einfach die CPU genommen. Im Cluster der Uni sollte das korrekt eingerichtet sein.


Inkognito-Nutzer   20.03.2025, 21:14

Wie kann es auch sein das ich nur bei open3d package diese Probleme habe, weil doch generell der Container alle files in nvliblist benutzt oder nicht bzw. Es geladen wird?

Inkognito-Nutzer   20.03.2025, 20:56

Das kommt raus, wenn ich den Befehl oben eingebe:

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /.singularity.d/libs/libGLdispatch.so.0)

   linux-vdso.so.1 (0x00007ffccd7b4000)

   libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007dc07e482000)

   /lib64/ld-linux-x86-64.so.2 (0x00007dc07e73f000)

   Version information:

   /.singularity.d/libs/libGLdispatch.so.0:

       libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6

       libc.so.6 (GLIBC_2.34) => not found

       libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6

       libc.so.6 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libc.so.6

       libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6

   /lib/x86_64-linux-gnu/libc.so.6:

       ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2

       ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2

Ich habe sonst gelesen die .so file im

nvliblist.conf

einfach auszukommentieren, aber dazu hab ich keine rechte.

version `GLIBC_2.34' not found

Da steht es: Das Python-Skript will (warum auch immer) glibc 2.34 haben, du hast aber nur 2.31. Du wirst also entweder das Skript anpassen oder den Container upgraden müssen.


Inkognito-Nutzer   20.03.2025, 14:25

Du meinst libGLdispatch.so.0 will 2.34? und nicht das Python-skript oder?

Wenn ich z.B GPU access aus mache (also apptainer run statt apptainer --nv run), dann steht da kein error. In der tat , findet der Container nicht mal den pfad nach /.singularity.d/.

Also liegt ja das Problem mit den GPU. /.singularity... kann ich nicht ändern, da ich aufm externen Cluster arbeite.

Den Container kann ich nicht upgraden, da es dann nicht mehr kompatibel mit der library Isaacgym ist welches ich brauche

julihan41  20.03.2025, 14:29
@Inkognito-Beitragsersteller

Dann befrage den Zuständigen für das Cluster. 🤷‍♂️

Da ich auch das Skript nicht sehe, weiß ich nicht mal, was du genau machen willst.

Inkognito-Nutzer   20.03.2025, 14:34
@julihan41

Mein Python skript besteht nur aus einer Zeile: import open3d

Das wars. Wenn ich GPU ausschalte funktioniert es, sonst kriege ich nen OS Error.