Python 中 Fatal Error: PyThreadState_Get: No Current Thread 错误
在我们的本地机器上,我们可以安装不同的 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 错误消息。
相关文章
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 错误 Modulenotfounderror: No Module Named NumPy
发布时间:2023/05/16 浏览次数:162 分类:Python
-
本篇文章讨论 ModuleNotFoundError: No module named 'numpy',列出可能的原因并提供解决方案。重现 No module named 'numpy' Python 支持数以千计的模块
Python 中管理 Segmentation Fault
发布时间:2023/05/16 浏览次数:173 分类:Python
-
使用 settrace 管理 Python 中的分段错误 segmentation fault 分段错误(Segmentation Fault)的一些最大原因是非法内存位置(使用您的代码访问您无权访问的内存)、获取庞大的数据集、无限递归等。
修复 windows 中 Python错误 Command cl.exe Failed: No Such File or Directory
发布时间:2023/05/16 浏览次数:124 分类:Python
-
pip 是 Python 的一个工具,允许您安装和管理包。 修复 Windows 中 command 'cl.exe' failed:No such file or directory 错误
Python 运行脚本错误 OSError: [Errno 8] Exec Format Error
发布时间:2023/05/15 浏览次数:187 分类:Python
-
Python 中的 subprocess 模块允许您通过创建新进程来运行命令。 使用其方法运行 shell 脚本时,有时您可能会在 Linux 中遇到 OSError: [Errno 8] Exec format error。