迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中 Fatal Error: PyThreadState_Get: No Current Thread 错误

作者:迹忆客 最近更新:2023/05/16 浏览次数:

在我们的本地机器上,我们可以安装不同的 Python 版本,它们只能在任何给定时间执行该版本的限制或新功能。

如果我们在具有所有依赖项的版本上下文中编写代码并且该代码在另一个 Python 版本上下文中运行,我们可能会遇到问题。

其中一个问题是 PyThreadState_Get:没有当前线程,在本文中,我们将讨论导致它的原因以及如何在本地 Mac/Linux PC 上解决它。


是什么导致 PyThreadState_Get: no current thread 错误

多个 Python 安装有不同的模块和依赖项,但是当我们运行 Python 代码时,错误的 Python 绑定可能最终链接到我们 PC 提供的系统。 这种情况在使用 macOS 时经常发生。

因此,我们必须确保正确的 Python(带有我们的模块)运行我们的代码并将正确的模块链接到我们的系统 Python。


使用sudo解决PyThreadState_Get: no current thread Error

如果您有多个 Python 安装,不同的库可能会使用 Python,要解决 PyThreadState_Get:没有当前线程错误消息,我们可以将活动 Python 更改为 Python 安装,作为您之前在代码中调用的默认库。

要更改活动的 Python 安装,我们可以使用下面的 sudo 命令。

sudo port select --list python

命令的输出:

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

从上面的输出中,活动的 Python 安装是 python27-apple,要切换包含依赖项和模块的 Python 安装,您需要 python34。

要更改为 python34,我们可以使用下面的 sudo 命令。

$ sudo port select python python34

执行上述命令后,我们可以使用 --list 命令检查它是否有效。

$ sudo port select --list python

命令输出现在应该显示 python34 处于活动状态。

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

使用 otool 解决 PyThreadState_Get: no current thread Error

通常,运行代码时出现 PyThreadState_Get: no current thread 错误消息的主要原因通常是将库(导入语句)与另一个无法识别它的 Python 安装一起使用。 我们可以使用 otool 和 install_name_tool 实用程序解决问题。

为了解决这个问题,我们需要将 Python 库(例如 Leap Motion)与备用 Python 安装一起使用,并且必须更新库的加载程序路径以引用我们想要的 Python 安装。

首先,使用 otool 命令检查当前加载程序路径。

$ otool -L LeapPython.so

命令的输出:

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)

因此,我们需要将当前的 Python location/reference /Library/Frameworks/Python.framework/Versions/3.4/Python 更改和更新为我们所需的 Python 安装。 为此,我们需要使用 install_name_tool 命令。

执行命令后,我们已将新的 Python 安装位置引用到我们要使用的库。

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

现在,我们可以运行 Python 代码而无需面对 PyThreadState_Get: no current thread 错误消息。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 中 Importerror: Install XLRD for Excel Support 错误

发布时间:2023/05/16 浏览次数:162 分类:Python

在本篇文章中,我们将探讨在 Python 中使用 Pandas 包时可能遇到以下错误的原因和解决方案。ImportError: Install xlrd >= 0.9.0 for Excel support 。让我们首先简要介绍一下 Pandas。

解决 Python 中 TypeError: An Integer Is Required 错误

发布时间:2023/05/16 浏览次数:100 分类:Python

在 Python 代码中发生的另一个最常见的错误是 TypeError。本文将展示我们如何在 Python 中得到 TypeError。 此外,我们将通过使用必要的示例和解释来讨论该主题,以使该主题更容易理解。

Python 中 ConnectionRefusedError: [Errno 61] Connection Refused 错误

发布时间:2023/05/16 浏览次数:189 分类:Python

有时在设计客户端-服务器程序时,您可能会遇到错误 ConnectionRefusedError。Python中 ConnectionRefusedError 错误是如何产生的 正如我们已经讨论过的,这个错误主要发生在客户端程序无法连接到服务器

Python 中错误 TypeError: Must Be Real Number, Not STR

发布时间:2023/05/16 浏览次数:152 分类:Python

TypeError: must be real number, not str 错误涉及使用错误的类型和非实数,在本例中为 str 类型。使用 float() 或 int() 解决Python 中 TypeError: must be real number, not str

Python 错误 TypeError: Iteration Over Non-Sequence

发布时间:2023/05/16 浏览次数:67 分类:Python

当您尝试迭代不可迭代的对象时,会出现错误 TypeError: iteration over non-sequence 。 现在您已经了解了 TypeError 的原因,让我们在 Python 中重新创建非序列错误的迭代。

Python 中管理 Segmentation Fault

发布时间:2023/05/16 浏览次数:173 分类:Python

使用 settrace 管理 Python 中的分段错误 segmentation fault 分段错误(Segmentation Fault)的一些最大原因是非法内存位置(使用您的代码访问您无权访问的内存)、获取庞大的数据集、无限递归等。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便