Python 3.7.17(最終版)の Windows インストール手順と pyenv-win 共存

  • URLをコピーしました!
目次

はじめに

「参考書のサンプルコードが Python 3.7 で書かれている」「以前作ったツールが、最新の Python だと動かない」といった理由で、あえて古いバージョンの Pythonが必要になるケースは少なくありません。

この記事では、Python 3.7 系の最終セキュリティ修正版である Python 3.7.17 を Windows 10 / 11 にインストールする手順を解説します。

⚠️ 作業前の注意事項
Python 3.7 系列は、2023 年 6 月 27 日に公式サポートが終了(EOL)しており、その後は公式のセキュリティパッチが提供されていません。インターネットに公開するサーバーや、業務で扱う重要なシステムでの利用は推奨されません。あくまで「学習用」「既存プロジェクトの互換性維持」「検証環境での一時利用」に留めることを推奨します。

本記事では、上記のリスクを理解した上で、特定のバージョン環境を構築したい方向けに、Python 3.7.17(3.7 系の最終版)の入手・インストール手順、および複数バージョン共存のための pyenv-win・venv の使い方まで実務目線で解説します。

この記事でわかること
  • Python 3.7.17(3.7 系の最終セキュリティ修正版)が推奨される理由
  • 公式サイトの「過去リリース一覧」からの入手手順
  • Windows インストーラでの設定(PATH 追加を含む)
  • 複数バージョンを共存させる pyenv-win の使い方
  • プロジェクト単位の依存管理に使える venv の活用方法
  • Python 3.7 対応ライブラリの最終版一覧
  • EOL 後のセキュリティリスクと対処の選択肢

Python 3.7 と現行バージョンの比較

Python 3.7 のインストール手順に入る前に、まず 「本当に 3.7 を使うべきか」 を判断するための情報を整理します。

項目Python 3.7Python 3.11(LTS 相当)Python 3.12(現行)
初回リリース2018 年 6 月 27 日2022 年 10 月2023 年 10 月
EOL(予定含む)2023 年 6 月 27 日(終了済み)2027 年 10 月予定2028 年 10 月予定
最終セキュリティ修正版3.7.17
セキュリティパッチ提供なし(PSF からの公式提供は停止)ありあり
主要ライブラリ対応古いバージョンのみ最新版が対応最新版が対応
AWS Lambda ランタイム終了済み利用可能利用可能
推奨用途学習・互換性維持本番運用本番運用・新規開発

Python 3.7 の利用が妥当なケース

  • 参考書・教材のサンプルコードが Python 3.7 で書かれており、学習目的で環境を揃えたい
  • 古いライブラリに依存している既存プロジェクトのメンテナンスが必要
  • 検証環境での一時的な動作確認

Python 3.7 を避けるべきケース

  • 新規開発プロジェクト(Python 3.11 以降を推奨
  • インターネットに公開するサーバー・Web アプリケーション
  • 業務で扱う重要なシステムやデータ処理

Python 3.7.17 インストーラーの入手方法

まずは Python の公式サイトから、インストーラーをダウンロードします。

トップページに大きく表示されている「Download Python 3.x.x」のボタン(最新版)はクリックしないように注意します。今回インストールしたいのは Python 3.7 系であり、最新版ではありません。

💡 なぜ 3.7.17 を推奨するのか
Python 3.7 系は合計 17 回のマイナーバージョン(3.7.0〜3.7.17)がリリースされており、3.7.17 が 3.7 系の最終セキュリティ修正版です。3.7.17 では OpenSSL が 1.1.1u にアップデートされ、CVE-2023-2650、CVE-2023-0465、CVE-2023-0466、CVE-2023-0464 などの脆弱性修正が反映されています。あえて 3.7 系を使う場合も最終版の 3.7.17 の利用を推奨します

参考: Python 公式「Python Release Python 3.7.17」
“The release you are looking at is Python 3.7.17, the final security bugfix release for the legacy 3.7 series which has now reached end-of-life and is no longer supported.”
(ご覧になっているリリースは Python 3.7.17 で、レガシーとなった 3.7 シリーズの最終セキュリティ修正版であり、すでに EOL に達しサポートは終了しています。)
https://www.python.org/downloads/release/python-3717/

過去のリリース一覧(Downloads)への行き方

STEP
公式サイトへアクセス

Welcome to Python.org にアクセスします。

STEP
ダウンロードページへ

メニューの 「Downloads」 にマウスを合わせ、表示されるメニューから 「Windows」 をクリックします。

STEP
バージョンを探す

ページを少し下にスクロールすると、「Looking for a specific release?」(特定のリリースをお探しですか?)という一覧表があります。

STEP
Python 3.7.17 を見つける

リストをスクロールして 「Python 3.7.17 – June 5, 2023」 を探し、右側の 「Download」 をクリックします。

リストが長いため、ブラウザの検索機能(Ctrl + F)で「3.7.17」と検索すると素早く見つけられます。

どのインストーラを選ぶか

ダウンロードページ(Files 欄)には、似た名前のファイルが複数並んでおり、迷いやすいポイントです。

Windows 10 / 11(64bit 版)を利用している場合、選択すべきファイルは以下です。

  • 選択するファイル: Windows x86-64 executable installer
⚠️ 間違いやすいファイル
  • embeddable zip file インストーラ形式ではなく、上級者向けの圧縮ファイルです。
  • x86 executable installer 32bit 版です。現在の PC はほぼ 64bit のため、x86-64 版推奨です。

クリックすると、python-3.7.17-amd64.exe というファイルのダウンロードが開始されます。

インストール手順

ダウンロードしたインストーラ(python-3.7.17-amd64.exe)をダブルクリックして起動します。

インストーラが起動したら、[Install Now] をクリックする前に画面下部のチェックボックスの確認を推奨します。

「Add Python 3.7 to PATH」のチェックを推奨

インストーラ画面の下部に 「Add Python 3.7 to PATH」 というチェックボックスがあります。デフォルトでは外れているため、手動でチェックを入れることを推奨します。

状態結果
チェックを入れるコマンドプロンプトで python と打つだけで Python が実行可能になる
チェックを入れないpython コマンドが認識されず、'python' は内部コマンドまたは外部コマンド... というエラーが表示される

インストール後に「Python が動かない」というトラブルの多くは、このチェック漏れが原因です。事後に PATH を手動で通すこともできますが、インストール時のチェックが最も簡単です。

インストールの実行と完了

「Add Python 3.7 to PATH」にチェックが入っていることを確認したら、中央の 「Install Now」 をクリックします。

インストールが始まるので数分待ちます。途中で「このアプリがデバイスに変更を加えることを許可しますか?」というダイアログが表示された場合は「はい」を選択します。

最後に 「Setup was successful」 と表示されれば、インストールは完了です。「Close」をクリックして画面を閉じます。

インストール確認とパッケージ管理

最後に、Python が正しく認識されているか確認し、必要なライブラリをインストールしてみましょう。

コマンドプロンプトでバージョン確認

Windows のスタートメニューから 「コマンドプロンプト(cmd)」 を起動し、以下のコマンドを入力して Enter キーを押します。

python --version

成功時の表示例

Python 3.7.17

このようにバージョン番号が表示されれば、インストールは成功し、PATH も正しく通っています。

💡 既に別のバージョンがインストールされている場合
他のバージョン(最新版など)が既にインストールされている環境では、python コマンドが別バージョンを優先して呼び出すことがあります。その場合、Windows 用のランチャーコマンド py を使うと便利です。以下のコマンドで 3.7 系を明示的に呼び出せます。

py -3.7 --version

出力例:Python 3.7.17

pip でライブラリを入れる(Pandas の例)

Python のパッケージ管理ツール pip を使って、データ分析ライブラリ「Pandas」をインストールしてみます。

pip install pandas

(または py -3.7 -m pip install pandas

⚠️ 古い Python には古いライブラリが入る
Python 3.7 は EOL を迎えているため、最新ライブラリの多くが 3.7 非対応となっています。pip は自動的に「Python 3.7 に対応していた最後のバージョン」を選んでインストールするため、最新環境とはライブラリのバージョンが異なる点に注意が必要です。

  • 最新の Python: Pandas 2.x 系(最新)が入る
  • Python 3.7: Pandas 1.3.5(3.7 対応の最終版)などが入る

主要ライブラリの Python 3.7 対応最終版一覧は、後述の「Python 3.7 対応ライブラリの最終版一覧」セクションを参照してください。

複数バージョンを共存させる:pyenv-win の活用

Python 3.7 を使うユーザーの多くは、「最新版も使いながら、特定プロジェクトだけ 3.7 で動かしたい」というニーズを持っています。Windows で複数の Python バージョンを柔軟に切り替えるには、pyenv-win を使うのが実用的です。

pyenv-win とは

pyenv-win は、Windows 環境で Python のバージョン管理を行うためのツールです。Linux / macOS 向けに広く使われている pyenv の Windows 移植版で、以下の特徴があります。

  • 複数の Python バージョンを 1 台の PC で共存可能
  • プロジェクトディレクトリ単位でバージョンを固定できる
  • コマンド一つで利用バージョンを切り替えられる
  • OSS として無償で利用可能(MIT ライセンス)

参考: pyenv-win 公式 GitHub リポジトリ
https://github.com/pyenv-win/pyenv-win

pyenv-win のインストール

PowerShell を管理者として起動し、以下のコマンドを実行します。

# インストールスクリプトのダウンロード
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"

# インストールの実行
&"./install-pyenv-win.ps1"

インストール後、PowerShell を一度閉じて再起動し、以下のコマンドで動作を確認します。

pyenv --version

バージョン情報が表示されれば、インストールは成功です。

⚠️ 既存の Python がある場合の注意点
インストーラから Windows に直接 Python をインストール済みの環境では、python コマンドが pyenv-win 経由ではなく既存インストールを優先することがあります。pyenv-win を活用する場合、PATH の優先順位で pyenv-win のシムを上位に配置するか、既存の Python をアンインストールしてから pyenv-win で管理する運用がシンプルです。

Python 3.7.17 のインストールと切替

pyenv-win のインストールが完了したら、Python 3.7.17 をインストールします。

# 利用可能な 3.7 系のバージョン一覧を確認
pyenv install -l | findstr 3.7

# Python 3.7.17 のインストール
pyenv install 3.7.17

# インストール済みバージョンの確認
pyenv versions

バージョンの使い分け

# システム全体のデフォルトを 3.7.17 に設定
pyenv global 3.7.17

# 特定のプロジェクトディレクトリだけ 3.7.17 に固定
cd C:\projects\my-legacy-app
pyenv local 3.7.17

pyenv local を実行すると、そのディレクトリに .python-version というファイルが作成され、そのフォルダ配下で python コマンドを実行したときに自動的に 3.7.17 が使われるようになります。プロジェクトごとに異なる Python バージョンを使いたい場合に有用です。

バージョン切替の動作確認

# 現在のバージョンを確認
pyenv version
# 例: 3.7.17 (set by C:\projects\my-legacy-app\.python-version)

# 別のディレクトリへ移動して再確認
cd C:\
pyenv version
# 例: 3.12.0 (set by C:\Users\username\.pyenv\pyenv-win\version)

ディレクトリに応じて自動的に Python バージョンが切り替わることが確認できます。

プロジェクト単位で依存関係を隔離する:venv

pyenv-win で Python 3.7.17 を切り替えられるようになったら、さらに venv を使ってプロジェクト単位で依存ライブラリを隔離することを推奨します。venv は Python 3.3 以降に標準搭載されている仮想環境ツールで、別途のインストールは不要です。

なぜ venv を使うのか

同じ Python 3.7.17 を使っていても、プロジェクトごとに必要なライブラリのバージョンは異なります。

  • プロジェクト A:pandas==1.3.5 が必要
  • プロジェクト B:pandas==1.1.5 が必要

グローバル環境に直接 pip install すると、後からインストールしたバージョンに上書きされてしまい、片方のプロジェクトが動作しなくなります。venv を使えば、プロジェクトごとに独立した Python 環境とライブラリを持たせることができ、こうした衝突を回避できます。

venv による仮想環境の作成と利用

# プロジェクトディレクトリに移動
cd C:\projects\my-legacy-app

# 3.7 系の仮想環境を作成(venv という名前のフォルダが作成される)
py -3.7 -m venv venv

# 仮想環境の有効化(コマンドプロンプトの場合)
venv\Scripts\activate.bat

# 仮想環境の有効化(PowerShell の場合)
venv\Scripts\Activate.ps1

有効化するとプロンプトの先頭に (venv) と表示され、仮想環境内で作業していることが分かります。

(venv) C:\projects\my-legacy-app>

仮想環境内でのライブラリ管理

仮想環境内で pip install すると、そのライブラリは venv フォルダ内にだけインストールされます。

# 特定バージョンの Pandas をインストール
pip install pandas==1.3.5

# 現在インストールされているライブラリを一覧出力
pip freeze > requirements.txt

# requirements.txt からライブラリを一括再構築
pip install -r requirements.txt

requirements.txt をプロジェクトのリポジトリに含めておけば、別の PC や別の開発者が同じ環境を再現することが容易になります。

仮想環境の無効化と削除

# 仮想環境の無効化
deactivate

# 仮想環境の削除(不要になった場合)
# venv フォルダを通常のフォルダ削除で削除するだけ
rmdir /s /q venv

参考: Python 公式ドキュメント「venv — 仮想環境の作成」
https://docs.python.org/ja/3/library/venv.html

pyenv-win + venv の組み合わせパターン

実務では、以下のパターンが典型的です。

  1. pyenv-win で Python バージョンを管理(例:3.7.17 と 3.12.x を共存)
  2. pyenv local でプロジェクトディレクトリの Python バージョンを固定
  3. venv でプロジェクト内に仮想環境を作成
  4. requirements.txt で依存ライブラリを固定

この 4 段構成により、同一 PC 内で複数の Python プロジェクトを衝突なく並行運用できます。

Python 3.7 対応ライブラリの最終版一覧

Python 3.7 は EOL を迎えているため、多くの主要ライブラリが 3.7 非対応になっています。pip install <ライブラリ名> とバージョン指定なしで実行すると、自動的に「3.7 対応の最終版」が選ばれます。以下は、主要ライブラリの Python 3.7 対応最終版の目安です。

ライブラリPython 3.7 対応最終版(目安)最新版(参考)主な用途
NumPy1.21.x 系2.x 系数値計算
Pandas1.3.52.x 系データ分析
SciPy1.7.x 系1.11+科学計算
scikit-learn1.0.x 系1.5+機械学習
Matplotlib3.5.x 系3.8+グラフ描画
TensorFlow2.11(2.12 以降は Python 3.8+ が必須)2.15+深層学習
Pillow9.5.x 系11+画像処理
requests2.31.x 系2.32+HTTP クライアント
Flask2.2.x 系3+Web フレームワーク
Django3.2 LTS 系(4.0 以降は Python 3.8+ が必須)5+Web フレームワーク

⚠️ 上記は目安であり、実際のインストール時にはライブラリ側の対応状況が変わっている可能性があります。 正確な対応状況は、各ライブラリの PyPI ページ(https://pypi.org/project/<ライブラリ名>/)の「Meta – Requires: Python」欄で確認することを推奨します。

バージョンを明示してインストールする

想定外のバージョンが入るのを防ぐため、特に実運用では バージョンを明示した pip install を推奨します。

# バージョンを固定してインストール
pip install pandas==1.3.5
pip install numpy==1.21.6
pip install scikit-learn==1.0.2

# requirements.txt にまとめて管理
pandas==1.3.5
numpy==1.21.6
scikit-learn==1.0.2
matplotlib==3.5.3

古いライブラリ自体のセキュリティリスク

ライブラリ本体も、バージョンが古くなると脆弱性が修正されないまま残るケースがあります。Python 本体と同様、EOL バージョンのライブラリを使い続けることは、潜在的なリスクを抱え続けることを意味します。この点は次のセクションで補足します。

Python 3.7 を使い続ける場合のリスクと対処

EOL 後に公開された主要な CVE

Python 3.7 は 2023 年 6 月 27 日に EOL を迎えており、以降に発見された脆弱性は公式には修正されません。3.7 系の最終版 3.7.17 でも以下のような脆弱性が未対応のまま残っています。

CVE 番号内容影響範囲
CVE-2023-24329urllib.parse のスキーム処理不備によるブラックリスト回避Python 3.11 未満(3.7 含む)
CVE-2023-27043email.parseaddr の不正なメールアドレス解析Python 3.11 未満(3.7 含む)
CVE-2022-45061IDNA デコード処理での DoSPython 3.11 未満(3.7 含む)
CVE-2022-42919Linux での multiprocessing 経由のローカル権限昇格Linux 固有(Windows への影響は限定的)

これらは Python 3.11 以降で修正されていますが、3.7 を継続利用する限り、修正が適用されることはありません

参考: Python Security 公式ドキュメント「Python Security Vulnerabilities」
https://python-security.readthedocs.io/vulnerabilities.html

関連ライブラリや OS 環境での影響

本体以外にも、以下のような環境面での制約があります。

AWS Lambda

Python 3.7 ランタイムはサポート終了済み(後続バージョンへの移行が必要)

主要 Linux ディストリビューション

Ubuntu 22.04 以降、RHEL 9 以降などでは標準 Python が 3.10 以降に更新されており、3.7 は追加インストールが必要

Docker Hub

公式 python イメージの 3.7 タグは引き続き公開されているものの、セキュリティパッチの新規提供はない

対処の選択肢

Python 3.7 を使い続ける必要がある場合、以下の選択肢があります。

選択肢
移行計画の策定(推奨)

本質的には、Python 3.11 以降への移行が最も推奨される対処です。コード修正工数はライブラリ依存関係によって異なるため、以下の流れで計画を立てることを推奨します。

  1. 依存ライブラリの Python 3.11 対応状況を PyPI で確認
  2. 2to3 ツールや型ヒント対応は発生しないため、互換性の確認が中心
  3. 検証環境で動作確認
  4. 本番環境への段階的な切替
選択肢
Docker コンテナによる隔離運用

Python 3.7 でしか動作しないレガシーシステムを、Docker コンテナ内に隔離する方法です。ホスト OS から切り離すことで、万が一の脆弱性悪用時の影響範囲を限定できます。

# Dockerfile の例
FROM python:3.7.17-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
選択肢
商用の延長サポート(ELS)サービスの利用

ActiveState、TuxCare、HeroDevs などの商用ベンダーが、EOL 後の Python 向けに有償のセキュリティパッチ提供サービス(Extended Lifecycle Support)を行っています。エンタープライズ環境で即時移行が困難な場合の選択肢となります。具体的な料金・契約形態は各ベンダーで異なるため、公式サイトでの確認を推奨します。

利用範囲を限定する運用の推奨

いずれの対処を取るにしても、Python 3.7 を使う環境は以下のように用途を限定することを推奨します。

  • インターネットに直接公開しない(閉域網または localhost 運用)
  • 業務データや機密情報を扱わない
  • 代替できない既存プロジェクトのメンテナンスに限定する
  • 移行計画を並行して進める

まとめ

本記事では、EOL を迎えた Python 3.7 を Windows 10 / 11 にインストールする手順と、関連する実務知識を解説しました。

  • 3.7 系を使う場合は、セキュリティ修正が反映された最終版 3.7.17 の利用を推奨します。
  • インストーラ起動時には 「Add Python 3.7 to PATH」 へのチェックを推奨します。
  • 最新版と 3.7 を共存させる場合は、pyenv-win によるバージョン管理が有用です。
  • プロジェクトごとの依存関係は venv + requirements.txt で隔離することを推奨します。
  • 主要ライブラリの 3.7 対応最終版(Pandas 1.3.5、NumPy 1.21.x 等)を把握しておくと、意図しない動作不整合を避けやすくなります。
  • Python 3.7 は 2023 年 6 月 27 日に EOL を迎え、以降は公式のセキュリティパッチが提供されていません。利用は「学習用」「互換性維持」「検証環境」に限定することを推奨します。
  • 継続利用が必要な場合は、Docker 隔離や商用 ELS サービスの利用も選択肢となります。
  • 新規開発では Python 3.11 以降のバージョンの利用を推奨します。

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次