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

提供: tknotebook
移動: 案内検索
 
(Python Launcher)
 
(1人の利用者による、間の12版が非表示)
2行: 2行:
 
[[メインページ]]>[[コンピュータの部屋#Python]]>[[Python Tips]]
 
[[メインページ]]>[[コンピュータの部屋#Python]]>[[Python Tips]]
  
 +
この記事では複数のバージョンのPythonを使い分ける方法を紹介します。尚、内容は Windows 限定、他の環境では未確認です。
  
==Pythonプログラムの関連付による起動の問題点==
 
  
Windows に Python をインストールし、例えば Pythonのソースファイルを prime.py を作成すると、
+
==Python Launcher==
コマンドプロンプトで
+
  
prime.py
+
Python3 インストール時、特に指定しなければ c:\Windows に py.exe/pyw.exe というコマンドがインストールされます。Python Launcher と呼ばれるものです。
  
と叩いたり、explorerの prime.py をダブルクリックするだけで prime.py を簡単にPythonで実行できます。
+
Windowsで複数のバージョンのPythonを使い分ける場合、pythonコマンドにパスを通して使うのは素人、この Python Launcher を使いましょう。コマンドラインで
 +
prime.py
 +
と打ったり、explorerで prime.py をダブルクリックした時に起動されるのも この Python Launcher です。これはコマンドラインで
 +
py prime.py
 +
と打つことと同じ意味になり、最後にインストールした python が起動します。
  
但し、Python2 と Python3 を両方ともインストールすると、後でインストールしたほうが実行されてしまいます。
+
Python Launcher Pythonスクリプトファイルのシェバン行を読んで、起動する Python インタープリターを切り替える機能があります。
これは後でインストールしたPython がファイルタイプ(Python.File, Python.NoConFile)の定義を上書きしてしまうからです。
+
 
+
==py.exe/pyw.exe コマンド==
+
 
+
Python インストール時 c:\Windows にインストールされる py.exe/pyw.exe コマンドは Python Launcher と呼ばれるものです。
+
 
+
py.exe/pyw.exe コマンドは Pythonスクリプトファイルのシェバン行を読んで、起動する Python インタープリターを切り替えます。
+
  
 
Python ファイルのシェバン行は以下のようにします
 
Python ファイルのシェバン行は以下のようにします
 +
  
 
Python2 を使う場合
 
Python2 を使う場合
  #!Python2
+
  #!python2
  
  
 
Python3 を使う場合
 
Python3 を使う場合
  #!Python3
+
  #!python3
  
  
  
 
より細かく Pythonのバージョンまで指定するときは
 
より細かく Pythonのバージョンまで指定するときは
  #!Python3.5
+
  #!python3.5
  
というように指定してください。
+
というようにマイナーバージョンまで指定してください。
  
 
  py prime.py
 
  py prime.py
  
というようにプログラムを起動すれば、お望みの python
+
というようにプログラムを起動すれば、お望みのバージョンの python でプログラムを実行できます。
実行できます。
+
シャバン行を書かなければ最後にインストールした pythonが起動します。
  
==インストーラが登録する関連付け==
+
==Pythonバージョンの直接指定(オーバライド)==
  
Pythonのインストーラは、pythonファイルのファイルタイプを、以下のようにしてしまいます。
+
シェバン行の無いpythonスクリプトをお望みのpythonバージョンで動かしたい場合や、シェバン行を無視してお望みのpythonバージョンを使いたい場合は
つまり、py.exe/pyw.exe ではなく、直接特定バージョンの pythonインタープリターが .pyファイルに関連付けられます。
+
以下の様に python Launcher に引数でpythonのバージョンを指定します。
  
  Python.File=c:\python27\python.exe "%1" %*
+
  py -3.6 prime.py
Python.NoConFile=c:\python27\pythonw.exe "%1" %*
+
  
==ファイルタイプの変更==
+
==Pythonバージョンを指定して pip を使う==
  
ファイルタイプを以下のように変更すると、
+
複数バージョンのpythonがインストールされている場合で、最後にインストールしたpythonにパスを通している場合, pipコマンドは最後にインストールしたpythonのバージョンしかメンテしてくれません。
  
Python.File=py.exe "%1" %*
+
任意のpythonバージョンの管理を行いたい場合は
Python.NoConFile=pyw.exe "%1" %*
+
  
コマンドプロンプトで
+
  py -3.5 -m pip ・・・・・(pipのコマンドパラメータ)
  prime.py
+
 
というようにした場合でも、シェバン行 による自動選択が可能になります。
+
というように pip を起動します。
 +
 
 +
==仮想環境==
 +
 
 +
複数バージョンのpythonがインストールされている場合、pythonバージョンを指定して仮想環境を作るには
  
 +
py -3.5 -m venv ・・・(venvのパラメータ)
  
 +
というようにします。
  
ファイルタイプの変更は、管理者として開いたコマンドプロンプトから以下のコマンドで変更できます。
+
仮想環境を activate しているときは、Python Launcher は、仮想環境のScriptsフォルダの python.exe を起動します。
 +
但し スクリプトのシェバン行で pythonバージョンを指定したり、pyコマンドのオプションでバージョンを明示的に指定したりすると、
 +
仮想環境ではなく インストール先の python.exe を起動してしまいます。これでは仮想環境にインストールしたパッケージが見えません。
  
ftype Python.File=py.exe "%1" %*
+
仮想環境を使うときは、pythonのバ-ジョンの指定は仮想環境に任せ、シェバン行や py コマンドでのpythonバージョンの指定などは行わないでください。
ftype Python.NoConFile=pyw.exe "%1" %*
+

2018年12月2日 (日) 14:29時点における最新版

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

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


Python Launcher

Python3 インストール時、特に指定しなければ c:\Windows に py.exe/pyw.exe というコマンドがインストールされます。Python Launcher と呼ばれるものです。

Windowsで複数のバージョンのPythonを使い分ける場合、pythonコマンドにパスを通して使うのは素人、この Python Launcher を使いましょう。コマンドラインで

prime.py

と打ったり、explorerで prime.py をダブルクリックした時に起動されるのも この Python Launcher です。これはコマンドラインで

py prime.py

と打つことと同じ意味になり、最後にインストールした python が起動します。

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

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


Python2 を使う場合

#!python2


Python3 を使う場合

#!python3


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

#!python3.5

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

py prime.py

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

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

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

py -3.6 prime.py

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

複数バージョンのpythonがインストールされている場合で、最後にインストールしたpythonにパスを通している場合, pipコマンドは最後にインストールしたpythonのバージョンしかメンテしてくれません。

任意のpythonバージョンの管理を行いたい場合は

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

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

仮想環境

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

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

というようにします。

仮想環境を activate しているときは、Python Launcher は、仮想環境のScriptsフォルダの python.exe を起動します。 但し スクリプトのシェバン行で pythonバージョンを指定したり、pyコマンドのオプションでバージョンを明示的に指定したりすると、 仮想環境ではなく インストール先の python.exe を起動してしまいます。これでは仮想環境にインストールしたパッケージが見えません。

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