ObsidianのTerminalプラグインでSyntaxErrorが出たときの対処法

sanane
記事内に商品プロモーションを含む場合があります

はじめに

Obsidian のプラグイン「Terminal」(by polyipseity)で統合ターミナルを開こうとした際に SyntaxError が表示される場合の原因と修正方法を解説します。

ターミナルを開こうとすると、以下のようなエラーが表示されることがあります。

File "<string>", line 182
                               _PipePty(selector, pty_fd) as pipe_pty,
                                ^
                                 SyntaxError: invalid syntax
SANANE
SANANE

このエラーはプラグインのバグではなく、macOS の Python 環境の問題です。設定を 1 箇所変えるだけで直ります。

原因

macOS の GUI アプリはシェルの PATH を引き継がないことが原因です。

macOS には Python が 2 つ存在します。

パスバージョン管理者
/usr/bin/python33.8.2Apple(システム固定)
/opt/homebrew/bin/python33.13 / 3.14 などHomebrew(自分でインストール)

ターミナルから python3 と打つと Homebrew 版が使われますが、Obsidian のような GUI アプリは .zshrc.bash_profile の PATH 設定を読みません。そのため、プラグインが python3 を呼び出すとシステムの /usr/bin/python3(3.8.2)が使われてしまいます。

Terminal プラグインのコードは括弧付き withを使っています。

with (
    _PipePty(selector, pty_fd) as pipe_pty,
    ...
):

この構文は Python 3.10 以降でしか使えないため、Python 3.8 では SyntaxError になります。

確認方法

自分の環境がこの問題に該当するか確認するには、ターミナルで以下を実行します。

/usr/bin/python3 --version
# → Python 3.8.2

Python 3.8.x と表示されればこの問題に該当します。Apple Silicon Mac では大抵このバージョンが固定されています。

修正方法

プラグインの設定ファイルを書き換えて、使用する Python のパスをフルパスで指定します。

設定ファイルの確認

以下のファイルをテキストエディタで開く。
{Obsidianのvaultフォルダ}/.obsidian/plugins/terminal/data.json

pythonExecutable の検索

"pythonExecutable": "python3" という行を探す(複数ある)。

フルパスへの書き換え

すべて "pythonExecutable": "/opt/homebrew/bin/python3" に書き換える。

Obsidian の再起動

設定を反映するため、Obsidian を再起動する。

具体的な変更内容は以下のとおりです。

// 変更前
"pythonExecutable": "python3"

// 変更後
"pythonExecutable": "/opt/homebrew/bin/python3"

Homebrew Python のパスを確認するには

ターミナルで以下を実行すると、Homebrew でインストールした Python のパスを確認できます。

which python3
# → /opt/homebrew/bin/python3

プラグインの設定画面から変更する場合

Obsidian の設定 → Terminal → プロファイル(Profile)→ 各プロファイルの「Python executable」欄に /opt/homebrew/bin/python3 を入力します。

設定画面から変更した場合も data.json が書き換わるため、どちらの方法でも結果は同じです。

なぜ /usr/bin/python3 は古いのか

macOS の /usr/bin/python3 は Apple が管理しており、OS の内部ツールとの互換性維持のために意図的に古いバージョンで固定されています。自分でアップデートすることはできず、これは正常な状態です。

開発用途では Homebrew などで別途 Python をインストールして使うのが一般的です。

記事URLをコピーしました