「Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには」の版間の差分

提供: tknotebook
移動: 案内、 検索
 
(→‎仮想環境での python の起動)
 
(1人の利用者による、間の23版が非表示)
2行: 2行:
 
[[メインページ]]>[[コンピュータの部屋#Python]]>[[Python Tips]]
 
[[メインページ]]>[[コンピュータの部屋#Python]]>[[Python Tips]]
  
 +
この記事では複数のバージョンのPythonを使い分ける方法を紹介します。尚、内容は Windows 限定、他の環境では未確認です。
  
−
==Pythonプログラムの関連付による起動の問題点==
+
2026.10.7 追記 内容は Python Intall Manager 版に限定することにしました。
 +
旧来の python インストーラのインストールした python では異なるかもしれません、あしからず。
  
−
Windows に Python をインストールし、例えば Pythonのソースファイルを prime.py を作成すると、
+
尚、旧来の python インストーラは python 3.16 からは提供されないので早めに乗り換えることをおすすめします。
−
コマンドプロンプトで
+
  
−
prime.py
 
  
−
と叩いたり、explorerの prime.py をダブルクリックするだけで prime.py を簡単にPythonで実行できます。
+
==Python Install Manager==
  
−
但し、Python2 と Python3 を両方ともインストールすると、後でインストールしたほうが実行されてしまいます。
+
'''Python Install Manager''' をインストールすると、 '''py.exe''' というコマンドが
−
これは後でインストールしたPython がファイルタイプ(Python.File, Python.NoConFile)の定義を上書きしてしまうからです。
+
~/AppData/Local/Microsoft/WindowsApps
 +
インストールされます。
  
−
==py.exe/pyw.exe コマンド==
+
Powershell のコマンドラインで、単に '''py''' と打鍵すると、インストールされている最新の python が起動されます。
  
−
Python インストール時 c:\Windows にインストールされる py.exe/pyw.exe コマンドは Python Launcher と呼ばれるものです。
+
以下 '''Python Install Manager''' は '''PIM''' と呼称します。
  
−
py.exe/pyw.exe コマンドは Pythonスクリプトファイルのシェバン行を読んで、起動する Python インタープリターを切り替えます。
+
 
 +
PIM は以下のように
 +
py <pythonファイル名>
 +
と打つことで任意のpythonスクリプトを実行できます。既定ではインストールされている最新の python でスクリプトを実行します。
 +
 
 +
尚、PIM は python3 や python という名前のコマンドもインストールし ~/AppData/Local/Python/bin にインストールし、
 +
コマンドラインから呼び出せますが、シェバン行に従って python を切り替える機能は有りません。
 +
PIMで複数の python をインストールしている場合は、最も最新のpythonが起動されます。
 +
python3.14 というようにバージョン付きの名前で python を呼び出すことも可能で、これも起動する python のバージョンは指定どおりです。
 +
 
 +
'''注意!'''
 +
uv 等で システムpython をインストールしている場合は、
 +
コマンドラインから python, python3, python<バージョン> で起動する python は
 +
PIM版 python ではないことが有るので注意してください。
 +
 
 +
== シェバン行 ==
 +
 
 +
PIM には Pythonスクリプトファイルのシェバン行を読んで、起動する Python インタープリターを切り替える機能があります。
  
 
Python ファイルのシェバン行は以下のようにします
 
Python ファイルのシェバン行は以下のようにします
 +
  
 
Python2 を使う場合
 
Python2 を使う場合
−
  #!Python2
+
  #!python2
  
  
 
Python3 を使う場合
 
Python3 を使う場合
−
  #!Python3
+
  #!python3
  
  
  
 
より細かく Pythonのバージョンまで指定するときは
 
より細かく Pythonのバージョンまで指定するときは
−
  #!Python3.5
+
  #!python3.13
  
−
というように指定してください。
+
というようにマイナーバージョンまで指定してください。
  
 
  py prime.py
 
  py prime.py
  
−
というようにプログラムを起動すれば、お望みの python で
+
というようにプログラムを起動すれば、お望みのバージョンの python でプログラムを実行できます。
−
実行できます。
+
シャバン行を書かなければ最後にインストールした pythonが起動します。
 +
 
 +
シェバン行で指定した pythonがインストールされていなければ、エラーになります。
 +
  No runtime installed that matches 3.13 Try running "py install 3.13".
 +
 
 +
==Pythonバージョンの直接指定(オーバライド)==
 +
 
 +
pythonスクリプトをお望みのpythonバージョンで動かしたい場合や、シェバン行を無視してお望みのpythonバージョンを使いたい場合は
 +
以下の様に py に引数でpythonのバージョンを指定します。
 +
 
 +
py -3.12 prime.py
 +
 
 +
尚、指定した版の python がインストールされていなければ エラーになります。
 +
ERROR] No runtime installed that matches 3.12. Try running "py install 3.12".
 +
 
 +
==Pythonバージョンを指定して pip を使う==
 +
 
 +
複数バージョンのpythonがインストールされている場合, pipコマンドは最新のpythonのバージョン専用です。
 +
 
 +
任意のpythonバージョンのパッケージを管理したい場合は
  
−
==インストーラが登録する関連付け==
+
py -3.12 -m pip ・・・・・(pipのコマンドパラメータ)
  
−
Pythonのインストーラは、pythonファイルのファイルタイプを、以下のようにしてしまいます。
+
というように pip を起動します。
−
つまり、py.exe/pyw.exe ではなく、直接特定バージョンの pythonインタープリターが .pyファイルに関連付けられます。
+
  
−
Python.File=c:\python27\python.exe "%1" %*
+
==仮想環境の作成==
−
Python.NoConFile=c:\python27\pythonw.exe "%1" %*
+
  
−
==ファイルタイプの変更==
+
複数バージョンのpythonがインストールされている場合、pythonバージョンを指定して仮想環境を作るには
  
−
ファイルタイプを以下のように変更すると、
+
py -3.13 -m venv ・・・(venvのパラメータ)
  
−
Python.File=py.exe "%1" %*
+
というようにします。
−
Python.NoConFile=pyw.exe "%1" %*
+
  
−
コマンドプロンプトで
+
==仮想環境での python の起動==
−
prime.py
+
−
というようにした場合でも、シェバン行 による自動選択が可能になります。
+
  
  
 +
'''仮想環境をアクティベートしているコマンドラインでは、py は原則仮想環境のScriptsフォルダの python.exe を起動します。'''
  
−
ファイルタイプの変更は、管理者として開いたコマンドプロンプトから以下のコマンドで変更できます。
+
但し スクリプトのシェバン行でバージョンを明示的に指定したりすると、python の起動に失敗します。
 +
[ERROR] No runtime installed that matches 3.13.2. Try running "py install 3.13.2".
 +
また、
 +
pt -3.13 <pythonファイル名>
 +
というように バージョンを指定して python を起動すると、仮想環境ではなく システムpython を起動してしまいます。
  
−
ftype Python.File=py.exe "%1" %*
+
仮想環境を使うときは、pythonのバ-ジョンの指定は仮想環境に任せ、
−
ftype Python.NoConFile=pyw.exe "%1" %*
+
シェバン行や py コマンドでのpythonバージョンの指定などは行わないでください。

2026年10月7日 (水) 09:25時点における最新版

メインページ>コンピュータの部屋#Python>Python Tips

この記事では複数のバージョンのPythonを使い分ける方法を紹介します。尚、内容は Windows 限定、他の環境では未確認です。

2026.10.7 追記 内容は Python Intall Manager 版に限定することにしました。 旧来の python インストーラのインストールした python では異なるかもしれません、あしからず。

尚、旧来の python インストーラは python 3.16 からは提供されないので早めに乗り換えることをおすすめします。


Python Install Manager

Python Install Manager をインストールすると、 py.exe というコマンドが

~/AppData/Local/Microsoft/WindowsApps

インストールされます。

Powershell のコマンドラインで、単に py と打鍵すると、インストールされている最新の python が起動されます。

以下 Python Install Manager は PIM と呼称します。


PIM は以下のように

py <pythonファイル名>

と打つことで任意のpythonスクリプトを実行できます。既定ではインストールされている最新の python でスクリプトを実行します。

尚、PIM は python3 や python という名前のコマンドもインストールし ~/AppData/Local/Python/bin にインストールし、 コマンドラインから呼び出せますが、シェバン行に従って python を切り替える機能は有りません。 PIMで複数の python をインストールしている場合は、最も最新のpythonが起動されます。 python3.14 というようにバージョン付きの名前で python を呼び出すことも可能で、これも起動する python のバージョンは指定どおりです。

注意! uv 等で システムpython をインストールしている場合は、 コマンドラインから python, python3, python<バージョン> で起動する python は PIM版 python ではないことが有るので注意してください。

シェバン行

PIM には Pythonスクリプトファイルのシェバン行を読んで、起動する Python インタープリターを切り替える機能があります。

Python ファイルのシェバン行は以下のようにします


Python2 を使う場合

#!python2


Python3 を使う場合

#!python3


より細かく Pythonのバージョンまで指定するときは

#!python3.13

というようにマイナーバージョンまで指定してください。

py prime.py

というようにプログラムを起動すれば、お望みのバージョンの python でプログラムを実行できます。 シャバン行を書かなければ最後にインストールした pythonが起動します。

シェバン行で指定した pythonがインストールされていなければ、エラーになります。

 No runtime installed that matches 3.13 Try running "py install 3.13".

Pythonバージョンの直接指定(オーバライド)

pythonスクリプトをお望みのpythonバージョンで動かしたい場合や、シェバン行を無視してお望みのpythonバージョンを使いたい場合は 以下の様に py に引数でpythonのバージョンを指定します。

py -3.12 prime.py

尚、指定した版の python がインストールされていなければ エラーになります。

ERROR] No runtime installed that matches 3.12. Try running "py install 3.12".

Pythonバージョンを指定して pip を使う

複数バージョンのpythonがインストールされている場合, pipコマンドは最新のpythonのバージョン専用です。

任意のpythonバージョンのパッケージを管理したい場合は

py -3.12 -m pip ・・・・・(pipのコマンドパラメータ)

というように pip を起動します。

仮想環境の作成

複数バージョンのpythonがインストールされている場合、pythonバージョンを指定して仮想環境を作るには

py -3.13 -m venv ・・・(venvのパラメータ)

というようにします。

仮想環境での python の起動

仮想環境をアクティベートしているコマンドラインでは、py は原則仮想環境のScriptsフォルダの python.exe を起動します。

但し スクリプトのシェバン行でバージョンを明示的に指定したりすると、python の起動に失敗します。

[ERROR] No runtime installed that matches 3.13.2. Try running "py install 3.13.2".

また、

pt -3.13 <pythonファイル名>

というように バージョンを指定して python を起動すると、仮想環境ではなく システムpython を起動してしまいます。

仮想環境を使うときは、pythonのバ-ジョンの指定は仮想環境に任せ、 シェバン行や py コマンドでのpythonバージョンの指定などは行わないでください。