Open Interpreterを実行中に呼び出される再帰の上限を変更する
2023-12-04
azblob://2023/12/04/eyecatch/2023-12-04-open-interpreter-recursion-000.jpg

概要

Open Interpreterを実行中に呼び出される再帰の上限を変更する

環境

- Windows 10 Home
- Docker 23.0.1-rd
- Docker Compose v2.16.0
- Python 3.11.5
 
Dockerで作成したPython3.11.5を実行する環境で作業をすることを想定している。

解決されるエラー

デフォルトではPythonが呼び出すことのできる再帰関数の上限が1000であるため、Open Interpreterでコードを実行する際に再帰呼び出し回数が上限を超えると以下のエラーが出力される。
RuntimeError: maximum recursion deplth exceeded

手順1 interpreter の実行ファイルを探す

以下のコマンドを実行して interpreter の実行ファイルを探す。
which interpreter
こちらのコマンドを実行して interpreter コマンドを実行するときに最初に呼び出されるファイルのパスを確認することができる。
私の環境では以下のパスが返ってくる。
/usr/local/bin/interpreter

手順2 ファイルをエディターで開く

今回は vim を使用するため、以下のコマンドを実行する。
vim /usr/local/bin/interpreter

手順3 再帰呼び出しの上限を指定する

interpreter のファイルに以下を追記し、再帰呼び出しの上限を変更する。※ + の行を追加する
Python#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from interpreter import cli
if __name__ == '__main__':
+   sys.setrecursionlimit(1000000)
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(cli())
これで再度 interpreter コマンドを実行することで再帰呼び出しの上限数が変更されて再帰呼び出しの回数が1000000回に達するまで、再帰呼び出し超過のエラーが返されることは無くなる。