致命的な Python エラー: PyThreadState_Get: 現在のスレッドがありません
-
PyThreadState_Get: no current thread
エラーの原因 -
sudo
を使用してPyThreadState_Get: no current thread
エラーを解決する -
otool
を使用してPyThreadState_Get: no current thread
エラーを解決する
私たちのローカル マシンでは、特定の時点でそのバージョンに制限されていることや新しいことしか実行できないさまざまな Python バージョンをインストールすることができます。
すべての依存関係を含むバージョン コンテキスト内でコードを記述し、そのコードを別の Python バージョン コンテキストで実行すると、問題が発生する可能性があります。
これらの問題の 1つは、PyThreadState_Get: 現在のスレッドがありません
です。この記事では、その原因と、ローカルの Mac/Linux PC で解決する方法について説明します。
PyThreadState_Get: no current thread
エラーの原因
複数の Python インストールには異なるモジュールと依存関係がアタッチされていますが、Python コードを実行すると、間違った Python バインディングが PC が提供するシステムにリンクしてしまう可能性があります。 このシナリオは、macOS を使用しているときによく発生します。
したがって、適切な Python (モジュールを含む) がコードを実行し、適切なモジュールをシステムの Python にリンクしていることを確認する必要があります。
sudo
を使用して PyThreadState_Get: no current thread
エラーを解決する
複数の Python インストールがある場合、異なるライブラリが Python を使用している可能性があり、PyThreadState_Get: no current thread
エラー メッセージを解決するために、active
Python を、以前に呼び出していたデフォルト ライブラリとしての Python インストールに変更できます。 あなたのコード。
active
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
エラーを解決する
多くの場合、コードを実行するときに PyThreadState_Get: no current thread
エラー メッセージが表示される主な原因は、多くの場合、それを認識しない別の Python インストールでライブラリ (import
ステートメント) を使用することです。 otool
および install_name_tool
ユーティリティを使用して問題を解決できます。
これを解決するには、別の Python インストールで Python ライブラリ (Leap Motion など) を使用する必要があり、必要な 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 の場所/参照 /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
これで、PyThreadState_Get: no current thread
エラー メッセージに直面することなく、Python コードを実行できます。
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関連記事 - Python Error
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません