Error fatal de Python: PyThreadState_Get: No hay hilo actual

Olorunfemi Akinlua 21 junio 2023
  1. Qué causa el error PyThreadState_Get: no hay hilo actual
  2. Use sudo para resolver el error PyThreadState_Get: no hay hilo actual
  3. Use otool para resolver el error PyThreadState_Get: no hay hilo actual
Error fatal de Python: PyThreadState_Get: No hay hilo actual

En nuestra máquina local, podríamos tener diferentes instalaciones de versiones de Python que solo pueden hacer lo que es limitado o nuevo para esa versión en un momento dado.

Podemos tener problemas si escribimos código dentro de un contexto de versión con todas sus dependencias y ese código se ejecuta en otro contexto de versión de Python.

Uno de estos problemas es el PyThreadState_Get: no hay hilo actual, y en este artículo, discutiremos qué lo causa y cómo resolverlo en su PC Mac/Linux local.

Qué causa el error PyThreadState_Get: no hay hilo actual

Varias instalaciones de Python tienen diferentes módulos y dependencias adjuntos, pero cuando ejecutamos el código de Python, el enlace de Python incorrecto podría terminar vinculándose con el sistema proporcionado por nuestra PC. Este escenario ocurre a menudo cuando se usa macOS.

Por lo tanto, debemos asegurarnos de que el Python correcto (con nuestros módulos) ejecute nuestro código y vincule los módulos correctos a nuestro sistema Python.

Use sudo para resolver el error PyThreadState_Get: no hay hilo actual

Si tiene múltiples instalaciones de Python, diferentes bibliotecas pueden usar Python, y para resolver el mensaje de error PyThreadState_Get: no current thread, podemos cambiar el Python activo a la instalación de Python que son las bibliotecas predeterminadas a las que estaba llamando anteriormente dentro tu codigo.

Para cambiar la instalación de Python activa, podemos usar el siguiente comando sudo.

sudo port select --list python

La salida del comando:

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

Del resultado anterior, la instalación activa de Python es python27-apple, y para cambiar la instalación de Python que contiene las dependencias y módulos, necesita python34.

Para cambiar a python34, podemos usar el comando sudo a continuación.

sudo port select python python34

Después de ejecutar el comando anterior, podemos verificar si funcionó usando el comando --list.

sudo port select --list python

La salida del comando ahora debería mostrar que python34 está activo.

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

Use otool para resolver el error PyThreadState_Get: no hay hilo actual

A menudo, la causa principal del mensaje de error PyThreadState_Get: no current thread al ejecutar su código suele ser el uso de una biblioteca (declaración importar) con otra instalación de Python que no la reconoce. Podemos solucionar el problema utilizando las utilidades otool e install_name_tool.

Para resolverlo, necesitaremos usar la biblioteca de Python (por ejemplo, Leap Motion) con la instalación alternativa de Python y debemos actualizar la ruta del cargador de la biblioteca para hacer referencia a la instalación de Python que queremos.

Primero, use el comando otool para verificar las rutas actuales del cargador.

otool -L LeapPython.so

La salida del comando:

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)

Por lo tanto, debemos cambiar y actualizar la ubicación/referencia actual de Python, /Library/Frameworks/Python.framework/Versions/3.4/Python, a nuestra instalación deseada de Python. Para hacer eso, necesitamos usar el comando install_name_tool.

Una vez que ejecutamos el comando, hemos referenciado la nueva ubicación de instalación de Python a la biblioteca que queremos usar.

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

Ahora, podemos ejecutar nuestro código Python sin enfrentar el mensaje de error PyThreadState_Get: no current thread.

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

Artículo relacionado - Python Error