Open1

PyCharm CEでDjangoデバッグ時にisAliveエラーが出る原因と解決法【Python 3.13対応】

tech_mwtech_mw

Djangoアプリを開発しているとき、PyCharmのデバッグ実行で突然下記エラーが出て止まってしまうことはありませんか?
今回初めて遭遇したので備忘録としてメモします。

AttributeError: '_MainThread' object has no attribute 'isAlive'. Did you mean: 'is_alive'?

Pycharm CEテスト/デバッグ周り
https://zenn.dev/tech_mw/scraps/012acdb3fe0355

環境

pc:MacBook Pro(2019)
os:macos Sequoia
Python:3.13.1
PyCharm CE:2022.2.5

発生状況

Djangoプロジェクトを runserver で実行しようとした際に発生

エラーの原因

エラーメッセージにある通り、isAlive というメソッドが見つからないことが原因です。
Python 3.9以降 では threading.Thread.isAlive() が削除され、代わりに is_alive() が使われるようになっています。

古いバージョンのPyCharm CEでは、この変更に未対応な部分があり、最新Pythonと組み合わせるとエラーが発生するようです。

解決方法

今回は PyCharm自体をアップデートすること で解決しました。
(Pythonのバージョンを下げるなどでも改善できると思いますが今回はアップデートを採用)
以下手順です。

  1. JetBrains Toolboxのインストール
    JetBrains製品を簡単に管理できる公式ツール。
    JetBrains Toolbox App から入手可能です。
    (CEの旧リンクは見つからなかったためToolboxを利用)

  2. Toolbox経由でPyCharm CEを更新

    • 旧バージョン: PyCharm CE 2022.2.5
    • 新バージョン: PyCharm CE 2025.2.11

    Toolboxを使うことで、CE版も含めて最新版にスムーズにアップデート可能です。

下記記事も参考にさせていただきました
https://qiita.com/MOSO1409/items/51f479f8484691c369ef

isAlive の扱いの変遷

  • Python 3.8 以前
    threading.Thread.isAlive() が正規に存在

  • Python 3.9〜3.12
    isAlive() は 非推奨(Deprecated)。
    呼ぶと DeprecationWarning が出るが、まだ動く(内部的に is_alive() に転送)。

  • Python 3.13
    isAlive() が 完全削除。呼ぶと AttributeError。

まとめ

  • Python 3.9以降では isAlive() が廃止され、 is_alive() に変更された
  • 古いPyCharm CEでは未対応のためエラーが発生
  • JetBrains Toolboxを使ってPyCharm CEを最新版にアップデートすれば解決
  • 最新版のPyCharm CEはUIも結構変わっていて旧varより使いやすくなっていました