ryeでPythonを実行すると "Cannot read termcap database; using dumb terminal settings." が出る

2024/02/26 追記

2/24リリースから改善されたので、下記の対応は不要になりました。

Release 20240224 · indygreg/python-build-standalone · GitHub

Rework of the terminfo database on Linux distributions. ncurses now looks for the terminfo database in /etc/terminfo, /lib/terminfo, and /usr/share/terminfo by default. This should result in the terminfo database being found on many popular Linux distributions, including Debian and RedHat variants. Read: the Python REPL should respond to key presses like backspace properly. In addition, the distribution archive contains a copy of the terminfo database in python/install/usr/share/terminfo. However, this terminfo database won't be used automatically at runtime unless custom code is run to point ncurses at it. See the documentation for more.


Ubuntuでryeを使っていると、タイトルの通りtermcap databaseが見つからないというエラーが発生する。

methane@skyland:~$ /home/methane/.rye/py/cpython@3.11.7/install/bin/python3
Cannot read termcap database;
using dumb terminal settings.
Python 3.11.7 (main, Jan  8 2024, 05:55:31) [Clang 17.0.6 ] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D

ryeはpython-build-standaloneからpython処理系をダウンロードして使用しているのだけれども、このバイナリがデフォルトで見にいくtermcap databaseの場所がUbuntuと異なるからこのエラーが発生しているらしい。この状態ではいくつかのキーが使えなくなってしまう。

この問題については次のページで説明されていた。

github.com

Debian/Ubuntuの場合であれば、 ~/.profile~/.bashrc などに次のように追記して環境変数でtermcap databaseの場所を教えてやるといい。

export TERMINFO_DIRS=/etc/terminfo:/lib/terminfo:/usr/share/terminfo
このブログに乗せているコードは引用を除き CC0 1.0 で提供します。