この記事には、PR部分にUdemyのアフィリエイトリンクを含みますが、記事の内容は筆者が独自に作成したものです。記事の作成についてUdemy様から報酬等を受け取って作成したものではありません。
イントロダクション
今回は、Pythonのバージョン管理・指定についてです。
仮想環境については、別の記事でフォーカスする予定なので取り扱いません。
また、下記説明はWindows11環境のみを対象としています。
あらかじめご承知おきください。
まずは、前提知識のインプットから始めましょう。
PR
前提知識 Pythonのバージョン
自由度が高く扱いやすいと言われるPythonですが、バージョン管理に関しては、プログラミング言語の中でも煩わしく(ライブラリがバージョンごとに入るため)、深入りを避けたい部分になります。
しかし、Python3.3以降に導入されたPythonLauncherにより、多少状況が改善されています。
解決に一歩前進するために、必要な基礎知識をインプットしておきましょう。
メジャーバージョン
現在、皆さんが扱っているPythonは、
Python3.XX.YY
というバージョンでしょう。
この Python3 だとか、 Python2 だとかいう数字の部分は、メジャーバージョンを表しています。
公式ドキュメントによると、メジャーバージョンの数字は「言語に本当に大きな変更があった場合に増やされます。」とのことです。
Python2からPython3に移行された際には、様々な抜本的な変更が行われました。今後起こるとすれば、Python4への変更ですが、今のところ目立った動きはありません。
初学者の人は安心してPython3を学びましょう。
マイナーバージョン
Python3.XX.YY
というバージョン表記のうち、XXの部分をマイナーバージョンと呼びます。
ソフトウェアやアプリケーションの互換性の問題が発生するのは、この部分になります。
公式ドキュメントによると、Python3のマイナーバージョンの数字は、「驚きの少ない変更があった場合に増やされます。」とのことです。
Python公式にとって驚きの少ない変更だとしても、アプリが動くかどうかを左右しかねない部分なので、一般ユーザーにとっては最も気を付けなければいけない部分になります。
マイクロバージョン
Python3.XX.YY
というバージョン表記のうち、YYの部分をマイクロバージョンと呼びます。
アプリが動くPythonバージョンが指定される際、このマイクロバージョンも一緒に例示されることがあります。
公式ドキュメントによると、マイクロバージョンの数字は、「バグフィックスリリースごとに増やされます。」とのことです。
あまり気にする必要がなさそうですが、マイナーバージョンが異なるとアプリが動かなくなる恐れがあるのに対して、マイクロバージョン間については、互換性が保証されています。
つまり、一般的には、バグフィックスが起きたならなるべくアップデートした方が得、ということになります。
Pythonのバージョン管理
Pythonのバージョンについての基本知識を確認したところで、今回のテーマであるバージョン管理に入りましょう。
旧マイナーバージョンのPythonをインストール
Pythonのインストール先はマイナーバージョンごとに異なるため、複数のバージョンを同一PCにインストールしても問題は発生しません。
コマンドプロンプトからも、現在どのバージョンのPythonがPCにインストールされているのかを確認することが出来ます。
py --list-paths
確認コマンドを打ち込むと、3.12と3.10をインストールしている場合、下記のような結果が出力されます。
-V:3.12 * C:\Users\XXXX\AppData\Local\Programs\Python\Python312\python.exe
-V:3.10 C:\Users\XXXX\AppData\Local\Programs\Python\Python310\python.exe
Windowsは、バージョン管理については大きな問題がありません。
問題は、Pythonを使う際にどうバージョンを指定するかになります。
Pythonのバージョン指定
Windowsの場合、Python3.3以上のバージョンであれば、Python Launcher の機能を利用することが出来ます。
PythonLauncherの所在確認
まずは、以下の手順でPythonLauncherがインストールされていることを確認してみましょう。
「設定」→「アプリ」→「インストールされているアプリ」→アプリの検索に「python」と入力
上記手順から、システムにPython Launcherが入っているかどうかを確認出来ます。
自分のPython環境を確認
PythonLauncherの機能で、自分のPC環境にどのPythonがインストールされているかを調べてみましょう。
py -0
複数のバージョンがインストールされている場合、以下のような表示になります。
-V:3.12 * Python 3.12 (64-bit)
-V:3.10 Python 3.10 (64-bit)
Pathを確認したいときは、以下のコマンドを打ち込みます。
py -0p
-V:3.12 * C:\Users\XXXX\AppData\Local\Programs\Python\Python312\python.exe
-V:3.10 C:\Users\XXXX\AppData\Local\Programs\Python\Python310\python.exe
実行結果は先ほどの「py –list-paths」と同じですが、より簡単な短縮コマンドの方が覚えやすいですね。
PythonLauncher機能を利用したPythonの起動
PythonLauncherがあれば、Pythonの起動も簡単です。以下のコマンドで最新版のPythonインタラクティブシェルが起動します。
py
インタラクティブシェルでPythonを閉じるには、以下のコマンドを利用します。
exit()
バージョンを指定したインタラクティブシェルの起動
異なるバージョンのインタラクティブシェルを起動するには、以下のコマンドを実行します。
py -3.XX
XXの部分には、インストールしているマイナーバージョンを指定してください。
「py -3.10」を実行してみます。
C:\Users\XXXX>py -3.10
Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug 1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
このコマンドで、インタラクティブシェルでのPythonのバージョン指定を行うことが出来ます。
ファイル呼び出し時にPythonバージョンを指定
普段システムで使っているPythonのバージョンを変えずに、特定のファイルだけを旧バージョンのPythonで呼び出したいときは、以下のコマンドを使います。
PS C:\Users\XXXXX>py -3.10 sample.py
C:\Users\XXXXX>というのは、コマンドプロンプトなりパワーシェルなりで先頭に表示されるカレントディレクトリを表します。
指定方法は、その後の「py~」で始まるコマンドの部分です。
「py -3.10」の部分は、バージョンを指定してインタラクティブシェルを開くコマンドと変わりませんが、その後に「sample.py」などの開きたい.pyファイル名を指定すると、指定したバージョンのPythonで「sample.py」が実行されます。
なお、開きたい.pyファイルと同じディレクトリに移動してからコマンドを実行することを忘れないようにしましょう。
ディレクトリの移動方法
スクリプトでPythonバージョンを指定
自分で書いたスクリプト(.py)ごとにPythonのバージョンを指定したい場合は、作成したスクリプトの先頭に、以下の行を追加することでもバージョン指定を行うことが出来ます。
#!python #Python2系で起動
#!python3 # Python3系の最新版で実行
#!python3.XX # python3系のXXバージョンでの実行(XXに任意の数字を入れてください:下記は例示)
#!python3.12 # 3.12の64bit版で実行
#!python3.10 # 3.10の64bit版で実行
スクリプトに書きにいかなければならないので、少しめんどくさいですが、連続でファイルを読み込む場合はこちらの方が便利です。
なお、「#!」は、シェバンと呼びます。
32ビット版のPythonを呼び出すコマンドもありますが、ここでは割愛します。
システム環境変数によるバージョン指定
以下の方法は、Windows自体のPythonの利用環境に変更を加えるものです。問題が発生する可能性がありますので、ご利用の際は復元環境を用意するなどして行ってください。
複数のPythonバージョンがインストールされている状態で、コマンドプロンプト上でPythonを起動した場合、どちらのバージョンのPythonが起動するでしょうか。
再度、確認コマンドを打ち込んでみましょう。
py -0p
-V:3.12 * C:\Users\XXXX\AppData\Local\Programs\Python\Python312\python.exe
-V:3.10 C:\Users\XXXX\AppData\Local\Programs\Python\Python310\python.exe
実行結果のうち、「*」がついている方が、デフォルトで使われるバージョンになります。
これは、システム環境変数の設定を行うことで変更することができます。
まず、スタートボタン横の検索バーに、「システム環境変数」と入力してください。すると、下記のようなアイコンが表示されますので、「開く」を押します。
すると、下記のようなプロパティが開きますので、詳細設定タブから赤枠で囲まれた部分をクリックします。
すると、下記のプロパティが開きますので、下段のシステム環境変数の方の「新規」を押します。
新しいシステム変数を設定するプロパティになりますので、変数名を、「PY_PYTHON」として、デフォルトで起動したいPythonのバージョンを変数値に書きます。
この状態でコマンドプロンプトでpythonコマンドを実行したときに起動するPythonのバージョンが変更されていることが確認できます。
なお、確認の際には、既に開いているコマンドプロンプトを一度すべて閉じて、新たにコマンドプロンプトを開いてください。
py -0p
-V:3.12 C:\Users\XXXX\AppData\Local\Programs\Python\Python312\python.exe
-V:3.10 * C:\Users\XXXX\AppData\Local\Programs\Python\Python310\python.exe
今回の場合は、-V:3.10の後に*がついています。これは、デフォルトで使用するPythonが3.10に切り替わったことを示しています。
元に戻す場合は、再びシステム環境変数の編集から、「PY_PYTHON」の値を使いたいバージョンに変更してください。
数字を変更したのち、コマンドプロンプトをすべて閉じて再起動し、バージョン確認を行うと、以下のようになります。
py -0p
-V:3.12 * C:\Users\XXXX\AppData\Local\Programs\Python\Python312\python.exe
-V:3.10 C:\Users\XXXX\AppData\Local\Programs\Python\Python310\python.exe
ただし、環境変数をいじりすぎるとPythonがうまく認識されなくなったり、再起動が何度も必要になったりと利用環境が安定しなくなるリスクもあります。
どこをどういじったのかのログを残したり、復元環境を用意しておくなどして万全の体制で行いましょう。
PR