📝

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

2023/12/04に公開

概要

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 のファイルに以下を追記し、再帰呼び出しの上限を変更する。

interpreter
#!/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回に達するまで、再帰呼び出し超過のエラーが返されることは無くなる。

Discussion