かゆい所に手が届く解説

【Windows】Python のバージョンが複数混在するとき、デフォルトのバージョンを切り替える方法

この記事は、表記の状況で困っている方に向けたものです。

ウェブで検索するといろいろな情報が出てきますが、私が試した方法はどれも上手くいかないか面倒だったりトラブルになりそうなリスクがありました。

今回は最も確実で安全かつ元に戻すのも楽な方法をご紹介します。

解決策の一つではありますが、これがベストなやり方とは限りませんので、ご了承ください。

できるだけ図を使い、初心者の方が分かりやすいように説明が多くなりました。
詳しい方にとっては、まどろっこしいかもしれません。

本題:説明

開発環境

私の環境は以下の通りです。

  • OS:Windows10 / Windows11
  • Python:3.8~3.11まで確認できました

この記事では Windows11 の画面キャプチャをしていますが、Windows10 でも同じことが再現できました。

macOS、Ubuntu などLinux系 の方は対応できずすみません。

状況

同じ PC に複数のバージョンの Python が入っているとき、デフォルトで実行されるバージョンを切り替えたい、という状況です。

通常、PC 内に複数バージョンの Python が存在する場合、実行されるのは最新バージョンとなります。

あえて古いバージョンが実行されるようにしたいという状況で、この記事が役に立つと思います。

なお、pip install でライブラリをインストールする Python のバージョンを指定する方法は、別の記事を用意しています。

さて、現在 PC に入っている Python のバージョンを確認するために、コマンドプロンプトで以下のコマンドを実行します。

py -0p

すると、

  • システムに存在するすべての Python のバージョン
  • その実行環境(python.exe)のパス
  • デフォルトに設定されているバージョン

を確認することができます。

現在入っているPythonのバージョンを確認

上の例では、3.7 と 3.9 が入っていることが確認できます。

このとき、バージョンの後ろに「*」が付いている方がデフォルトに設定されています

なお、Python のスクリプトを実行したとき、どちらのバージョンが使われる(呼び出される)かを確認するため、以下の状況を用意しました。

このとき、

py -3.* -m pip list

というように py コマンドにバージョンを付けて pip list を実行すると、そのバージョンにインストールされているライブラリを確認することができます。

① 3.7 の環境

3.7 には、bottle フレームワークがインストールされています

バージョンを指定してpip listを実行

② 3.9 の環境

3.9 には、bottle フレームワークがインストールされていません

別のバージョンにはbottleが入っていない状況を確認

サンプルスクリプトの用意

上記の違いを確認するため、bottle をインポートするスクリプトを用意します。

インポート以外の処理は入れていませんが、このスクリプトを実行したとき、その環境に bottle が入っていなければエラーが出ます。

import bottle

ファイル名は「test.py」としました。

3.9 でエラーが出ることを確認する

現在、3.9 がデフォルトの状態です。

用意したスクリプトをコマンドプロンプトで実行します。

3.9ではエラーが出ることを確認

すると、ModuleNotFound エラーで bottle がないと言われます。

3.9 には bottle が入っていないので、エラーが出て当然ですね。

3.7 ではエラーが出ないことを確認する

次に、3.7 をデフォルトに変更し、

デフォルトのバージョンを3.7に変更した図

同じくコマンドプロンプトで実行します。
(デフォルトの設定変更方法は後述。)

デフォルトのバージョンを変更してから実行した図

今度はエラーが出ずに実行することができました

これで、デフォルトのバージョンを変更することができていると確認できました。

解決方法

他のサイトで紹介されていること

私が調べた限り、よく見かけるのは以下の内容でした。

  • 「py.ini」ファイルを作成してdefaultを指定する
  • シェバン行にバージョンを指定する
  • 仮想環境(venv)で切り替える

ということですが、どれも一長一短。

もっとも簡単な方法として、システム環境変数の設定をすることですぐに解決できます。

この方法では、元に戻すのも簡単で、システムには影響がないので安心です。

具体的な手順を紹介します。

①システムのプロパティを表示する

*上記でも説明した通り、この記事は Windows をお使いの方に向けた説明です。

システム環境変数(PATH)の設定をするために「システムのプロパティ」を出します。

システム環境変数の設定を出す図
これはWindows11の画面です

Windows10 の場合もほとんど同じです。

左下の検索ボックスに「システム環境変数」と入力すれば、一覧にメニューが表示されます。

②システムのプロパティ

下の図と同じ状況であればそのまま「環境変数」をクリックして③に進んでください。

画面が違うという場合、上部の「詳細設定」タブをクリックすると「環境変数」があります。

システムのプロパティの図

③環境変数

環境変数ウィンドウが表示されます。

下図の通り、「Path」という項目が2か所ありますが、
下の「システム環境変数」のPath だけを設定します。

上の「〇〇のユーザー環境変数」の Path は関係ありません。

環境変数のPathの確認

「Path」をクリックし、新規をクリックします。

Pathを新しく登録する図

④新しいシステム変数の追加

「新しいシステム変数」のウィンドウが表示されます。

下図のように、変数名には「PY_PYTHON」と入れ、変数値にはデフォルトに設定したい Python のバージョンを入れます。

この例では、「3.7」とします。

新しいシステム変数を登録する図

できたらOKをクリックします。

元のウィンドウもすべてOKをクリックします。

⑤解決

現在開いているコマンドプロンプトはすべて閉じて、新しくコマンドプロンプトを開きます。

(複数開いている場合でも、全て閉じてください。)

デフォルトの設定を確認するため、以下を実行。

py -0p

Python3.7 がデフォルトに変更されています。

デフォルトのバージョンが3.7であることを確認

元に戻すには

最新のバージョンをデフォルトに戻す場合、先ほど設定した PATH の中から該当バージョンの「PY_PYTHON」を削除してください。

環境変数の設定で該当するバージョンのシステム環境変数を削除する図

実行時にバージョンを指定する

ここまで紹介してきたのは、システム(Windows)に対してデフォルトの Python のバージョンを設定する方法でした。

しかし、そこまでしなくても「一時的に」バージョンを指定してスクリプトを実行したい時があります。

そんなときは、以下のようにコマンドを実行すればOKです。

py -3.9 test.py

これで、デフォルトの設定に関係なく強制的に 3.9 で実行することができます。

ライブラリのインストール先は変わらない?

今回紹介した方法は、あくまで「デフォルトの Python 実行環境=バージョンの変更」です。

実は、「pip installでライブラリをインストールする際のインストール先の Python のバージョンを変更する方法」は別にあります。

その説明について、別の記事を用意していますので、こちらを参考にしてください。

まとめ

今回はPython のバージョンが複数混在するとき、デフォルトのバージョンを切り替える方法について解説しました。

エラーはケースバイケースのことがあり、今回紹介した方法が誰にでも適用されるとは限りません。

上手くいかない、同じようにならないという場合、ぜひコメントで質問してください。

Python に限らず、プログラミングの学習をしていると問題はつきものです。
(仕事でもそうですが。)

コーディングのエラーは割と解決策がすぐに見つかりますが、開発環境やシステムに関するトラブルは本当に大変です。

今回ご紹介した件も初心者にはよくありそうな事例なので、この記事が参考になれば嬉しいです。

「参考になった」「ならなかった」「間違いがある」など、何かあればコメントなどでフィードバックをもらえると嬉しいです。

とても励みになります。

Pythonについて詳しく知りたいという方は、こちらの書籍もおススメです。

それでは、ステキなPythonライフを!

ABOUT ME
papa3
某教育機関で現役の講師をしながら、ブログとYouTubeでプログラミングの情報を発信しています。個人でもウェブアプリケーション開発と運営をしながら本業収入<副業を目指しています!

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です