| この記事の要点 |
|
エラー内容
File "/usr/bin/yum", line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax
発生条件
yum コマンドを実行した際に発生するエラーです。/usr/bin 直下にある python のシンボリックリンクを 2.x 系から 3.x 系に変更すると発生します。典型的には、Python 3 をインストールしたあとに「python と打ったら Python 3 が動くようにしたい」と考えて、次のような操作をした場合です。
# これが原因になる操作
sudo ln -sf /usr/bin/python3 /usr/bin/python
原因:yum は Python 2 で書かれている
CentOS 7(RHEL 7 系)の yum は Python で書かれたスクリプトで、1 行目(shebang)が #!/usr/bin/python になっています。つまり、/usr/bin/python が指している Python で実行されます。
エラーになった 30 行目の except KeyboardInterrupt, e: は Python 2 の例外の書き方で、Python 3 では except KeyboardInterrupt as e: と書かなければ文法エラーになります。そのため、/usr/bin/python を Python 3 に向けた時点で yum が動かなくなります。
yum 以外にも、CentOS 7 には /usr/bin/python を前提にした Python 2 製のシステムツール(firewall-cmd など)があり、同じ理由で動かなくなることがあります。
対処法
1. /usr/bin/python を Python 2 に戻す(推奨)
2.x 系に戻すとエラーが解決します。
# 現在のリンク先を確認
ls -l /usr/bin/python*
# Python 2 に戻す(CentOS 7 では python2 → python2.7 へのリンクがある)
sudo ln -sf python2 /usr/bin/python
# 確認
python -V # Python 2.7.x と表示されれば OK
sudo yum --version
2. urlgrabber-ext-down でも同じエラーが出る場合
yum の起動は直ったのに、パッケージのダウンロード中に /usr/libexec/urlgrabber-ext-down で SyntaxError が出ることがあります。これも Python 2 で書かれたスクリプトです。手順 1 でリンクを戻していれば解消しますが、リンクを戻せない事情がある場合は、各スクリプトの 1 行目を python2 に明示します。
# バックアップを取ってから 1 行目を書き換える
sudo cp -p /usr/bin/yum /usr/bin/yum.bak
sudo cp -p /usr/libexec/urlgrabber-ext-down /usr/libexec/urlgrabber-ext-down.bak
sudo sed -i '1s|^#!/usr/bin/python$|#!/usr/bin/python2|' /usr/bin/yum /usr/libexec/urlgrabber-ext-down
head -1 /usr/bin/yum # #!/usr/bin/python2 になっていることを確認
この方法は、yum のパッケージ更新でファイルが置き換わると元に戻ります。根本的には手順 1 の「/usr/bin/python は Python 2 のままにする」が確実です。
Python 3 を使いたいときの正しいやり方
システムの /usr/bin/python は書き換えず、次のいずれかの方法で Python 3 を使います。
| 方法 | やり方 | 特徴 |
|---|---|---|
python3 コマンドを使う | そのまま python3 / pip3 と打つ | 最も安全。システムに影響しない |
| 仮想環境 | python3 -m venv venv → source venv/bin/activate | 有効化した端末では python が Python 3 になる。プロジェクトごとに分けられる |
| エイリアス | ~/.bashrc に alias python=python3 | 対話シェルだけに効き、yum などのスクリプトには影響しない |
| pyenv | ユーザーのホームに任意のバージョンを入れて切り替える | 複数バージョンを使い分けたい場合 |
CentOS 8 以降・後継 OS との違い
- CentOS 8 / RHEL 8 以降の
yumは実体がdnfで、システム専用の Python 3(platform-python)で動くため、/usr/bin/pythonを変えてもこのエラーにはなりません - CentOS 7 は 2024 年 6 月 30 日にサポートが終了しており、標準のミラーからパッケージを取得できなくなっています。セキュリティ更新も提供されないため、AlmaLinux や Rocky Linux などへの移行を検討してください
確認方法
ls -l /usr/bin/pythonでリンク先がpython2(またはpython2.7)になっているかhead -1 /usr/bin/yumで、yum がどの Python を使う設定かsudo yum check-updateがエラーなく最後まで動くか(ダウンロード処理まで確認できる)
関連
- 【Linux】ln リンク/ショートカットの作成と削除
- yum コマンドの使い方|RedHat 系のパッケージ管理と dnf との関係
- Python 3 CentOS インストール完全ガイド
- Python 仮想環境の構築|venv・virtualenv・pipenv・poetry
子ページはありません
- curl: (51) SSL: certificate subject name '~' does not match target host name '~'
- mount: special device ... does not exist
- 【yum install php-fpm】エラー: パッケージ: php-fpm-5.4.16-46.el7.x86_64 (base)
- ファイルが開けません: https://centos7.iuscommunity.org/ius-release.rpm を飛ばします。
- File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
- unable to execute 'gcc': No such file or directory
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- djangoのテンプレートの作成とヘッダー・フッターの共通化 2026-10-03 21:41:49
- テンプレートフラグメント(ヘッダー等の共有化) 2026-10-03 21:41:49
- reCAPTCHA v3 使い方(サンプル付き) 2026-10-03 21:37:05
- Content-Type一覧|MIMEタイプとはとHTTPでの主な使用場面 2026-10-03 21:37:05
- SpringにおけるAOPの使い方 2026-10-03 21:37:05
- X (Twitter) API でツイートできないがエラーが出ない問題の原因と対処 2026-10-03 11:33:01
- X (Twitter) API アプリケーション登録完全ガイド|v2・Bearer Token・OAuth 2.0 PKCE 2026-10-03 11:33:01
- X (Twitter) API 完全ガイド|従量課金の料金・単価(2026年10月)と v2 移行 2026-10-03 11:32:40
- Google DeepMind とは?Gemini・AlphaFold の開発元 2026-10-03 11:26:56
- Cursor とは?AI 統合型コードエディタの使い方・料金 2026-10-03 11:26:56
- Claude (Anthropic) とは?AIチャットの使い方・モデルファミリ・API 2026-10-03 11:26:56
- AIベンダー一覧:OpenAI・Anthropic・Google DeepMind・Microsoft・Meta 2026-10-03 11:26:56
- クラウド・インフラ完全ガイド — AWS/Azure/GCP/Kubernetes 2026-10-03 11:26:56
- テキストエディタ完全比較 (VS Code / Cursor / Vim / Emacs / IDE) 2026-10-03 11:26:56
- プログラミング学習プラットフォーム|Scratch・micro:bit ほか 2026-10-03 11:26:56