Schwerwiegender Python-Fehler: PyThreadState_Get: Kein aktueller Thread

Olorunfemi Akinlua 21 Juni 2023
  1. Was verursacht den Fehler PyThreadState_Get: kein aktueller Thread.
  2. Verwenden Sie sudo, um den Fehler PyThreadState_Get: kein aktueller Thread zu lösen
  3. Verwenden Sie otool, um den Fehler PyThreadState_Get: kein aktueller Thread zu lösen
Schwerwiegender Python-Fehler: PyThreadState_Get: Kein aktueller Thread

Auf unserem lokalen Computer könnten wir verschiedene Python-Versionsinstallationen haben, die zu einem bestimmten Zeitpunkt nur das tun können, was in dieser Version eingeschränkt oder neu ist.

Wir können Probleme bekommen, wenn wir Code in einem Versionskontext mit all seinen Abhängigkeiten schreiben und dieser Code in einem anderen Python-Versionskontext ausgeführt wird.

Eines dieser Probleme ist PyThreadState_Get: kein aktueller Thread, und in diesem Artikel werden wir erörtern, was es verursacht und wie es auf Ihrem lokalen Mac/Linux-PC behoben werden kann.

Was verursacht den Fehler PyThreadState_Get: kein aktueller Thread.

An mehrere Python-Installationen sind verschiedene Module und Abhängigkeiten angehängt, aber wenn wir Python-Code ausführen, kann die falsche Python-Bindung mit dem von unserem PC bereitgestellten System verknüpft werden. Dieses Szenario tritt häufig bei der Verwendung von macOS auf.

Daher müssen wir sicherstellen, dass das richtige Python (mit unseren Modulen) unseren Code ausführt und die richtigen Module mit unserem System Python verknüpft.

Verwenden Sie sudo, um den Fehler PyThreadState_Get: kein aktueller Thread zu lösen

Wenn Sie mehrere Python-Installationen haben, können verschiedene Bibliotheken Python verwenden, und um die Fehlermeldung PyThreadState_Get: kein aktueller Thread zu lösen, können wir das aktive Python in die Python-Installation ändern, die Sie zuvor als Standardbibliotheken aufgerufen haben dein Code.

Um die aktive Python-Installation zu ändern, können wir den folgenden sudo-Befehl verwenden.

sudo port select --list python

Die Ausgabe des Befehls:

Available versions for python:
    none
    python26-apple
    python27
    python27-apple (active)
    python34

Aus der obigen Ausgabe ist die aktive Python-Installation python27-apple, und um die Python-Installation zu wechseln, die die Abhängigkeiten und Module enthält, benötigen Sie python34.

Um zu python34 zu wechseln, können wir den untenstehenden sudo-Befehl verwenden.

sudo port select python python34

Nachdem wir den obigen Befehl ausgeführt haben, können wir mit dem Befehl --list überprüfen, ob es funktioniert hat.

sudo port select --list python

Die Befehlsausgabe sollte nun zeigen, dass python34 aktiv ist.

Available versions for python:
    none
    python26-apple
    python27
    python27-apple
    python34 (active)

Verwenden Sie otool, um den Fehler PyThreadState_Get: kein aktueller Thread zu lösen

Häufig ist die Hauptursache für die Fehlermeldung PyThreadState_Get: no current thread beim Ausführen Ihres Codes die Verwendung einer Bibliothek (import-Anweisung) mit einer anderen Python-Installation, die diese nicht erkennt. Wir können das Problem mit den Dienstprogrammen otool und install_name_tool lösen.

Um es zu lösen, müssen wir die Python-Bibliothek (z. B. Leap Motion) mit der alternativen Python-Installation verwenden und den Ladepfad der Bibliothek aktualisieren, um auf die gewünschte Python-Installation zu verweisen.

Verwenden Sie zunächst den Befehl otool, um die aktuellen Ladepfade zu überprüfen.

otool -L LeapPython.so

Die Ausgabe des Befehls:

LeapPython.so:
    @loader_path/LeapPython.so (compatibility version 0.0.0, current version 0.0.0)
    /Library/Frameworks/Python.framework/Versions/3.4/Python (compatibility version 3.4.0, current version 3.4.0)
    @loader_path/libLeap.dylib (compatibility version 0.7.0, current version 2.0.1)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

Daher müssen wir den aktuellen Python-Speicherort/-Verweis /Library/Frameworks/Python.framework/Versions/3.4/Python auf unsere gewünschte Python-Installation ändern und aktualisieren. Dazu müssen wir den Befehl install_name_tool verwenden.

Sobald wir den Befehl ausgeführt haben, haben wir den neuen Python-Installationsort auf die Bibliothek verwiesen, die wir verwenden möchten.

install_name_tool -change /Library/Frameworks/Python.framework/Versions/3.4/Python \
/usr/local/Cellar/python/3.8.8/Frameworks/Python.framework/Versions/3.8/lib/libpython3.8.dylib \
LeapPython.so

Jetzt können wir unseren Python-Code ausführen, ohne dass die Fehlermeldung PyThreadState_Get: no current thread angezeigt wird.

Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

Verwandter Artikel - Python Error