※ Windows 10 のバージョン 1903 から、 Python がデフォルトで入っています。
※ そのため、 C:\Users\{ユーザー名}\AppData\Local\Microsoft\WindowsApps\python.exe
がデフォルトで Path に登録されていて厄介なので注意してください。
※ Python をインストールするフォルダを決めていればどのバージョンが入っているか把握できますが、分からなくなった時のためにコマンドを追記しました。
※ Python をよく使うようになってきたので、 venv
を追加しました。
Python のバージョン管理と言ったら、 pyenv が主流っぽい気がします。
あんまり詳しく知りませんが・・・
でも、 pyenv って Python2.7 とかで使えるイメージがあります。
そして、 Windows の場合は普通に 公式ページ から 64bit 版の Python の最新版を落としてインストールすると、当然 Python3.7 (執筆時点)とかが入って、 Python2.7 も落としてきてインストールしても、 Path を通せるのはどちらかになりますよね。
ちなみに Windows 10 で環境変数をいじるためには、Windowsキー + i を押して設定を開き、検索窓に「システムの詳細」って入れれば「システムの詳細設定の表示」が出ますので、Windows 7 の時のように環境変数の Path に Python の実行ファイルのあるフォルダと Lib フォルダやら Scripts フォルダやらを追加すればコマンドプロンプトで python と打てば実行できるようになりますよね。
しかし、環境変数に書いてしまうと当然バージョンの切り替えは環境変数に依存してしまいます。
そこで、今回ご紹介する方法を使います。
(これもググっていて見つけたものなので、ご存知の方も多いかもしれませんね)
まずは普通に Python をインストールする
Windows に、普通にインストールします。
Path の設定とかはしません。
標準的なインストールでも構いませんが、実行ファイルの場所を把握するためにインストールするフォルダは指定することをお勧めします。
別のバージョンの Python もインストールする
例えば最初に Python3.7 をインストールしたとしましょう。
その次に、例えば Python2.7 をインストールしましょう。
ここで、 Python3.7.1 を入れた後に Python3.7.2 を入れたら Python3.7.1 は上書きされるので、最低限マイナーバージョンは異なるものをインストールする必要があります。
なので、 Python3.7 と Python3.6 をインストール、でも構いません。
必要なバージョンの Python をインストールします。
コマンドプロンプトで実行
Path を通していないので、コマンドプロンプト上で python -V
と入れても、何も反応しないと思います。
以下のようなイメージです。
C:\Users\hoge>python -V
'python' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
今までは Path を通すことによって、このコマンドを使えるようにしていました。
それが、以下のコマンドを使うと解決することが分かりました。
C:\Users\hoge>py -V
Python 3.7.2
py
というコマンドが使えます。
バージョンを指定して実行する場合、以下のようにします。
C:\Users\hoge>py -2.7 -V
Python 2.7.15
C:\Users\hoge>py -3.7 -V
Python 3.7.2
指定しない場合、インストールされている最新のバージョンで動作するようです。
また、 pip
を使うときは、以下のようにします。
C:\Users\hoge>py -2.7 -m pip freeze
autopep8==1.4.3
configparser==3.7.1
future==0.17.1
futures==3.2.0
jedi==0.13.2
mccabe==0.6.1
parso==0.3.2
pluggy==0.8.1
pycodestyle==2.5.0
pydocstyle==3.0.0
pyflakes==2.1.0
python-jsonrpc-server==0.1.2
python-language-server==0.22.0
rope==0.11.0
six==1.12.0
snowballstemmer==1.2.1
yapf==0.25.0
python コマンドでモジュールを指定するときと同じ感じですね。
pip install
も、同じようにバージョン指定でそれぞれ入れることができます。
インストールされる先は、きちんとそれぞれの Python のフォルダの中になるため、 Atom などのエディタで Python の補完機能を使う場合は使いたいバージョンの python.exe を指定するだけです。
指定しなければいけないのはちょっと残念ですが。。。
インストール済みのバージョンが分からなくなったら
自分はCドライブ直下にPython
というフォルダを作成してそこにいつもインストールしていたのですが、Dドライブにもフォルダを作ってそこにもインストールしていたことに、つい最近気づきました。
そして64bit版だとバージョン指定が若干異なるようなので、じゃあバージョン指定ってどうすればいいの、という時に以下のコマンドを実行しましょう。
d:\>py --list
Installed Pythons found by py Launcher for Windows
-3.9-64 *
-3.7-64
py --list
と入力すれば、選択可能なバージョンが一目で分かりますね。
venv
お手軽に Python でプログラムを書いていると、ライブラリは Windows 上の Python に直接インストールするやり方をやめたくなってきました。
なので、 venv
を使うことにしました。
そんなに難しい使い方はしておらず、サクッと構築していきます。
例えばプロジェクトフォルダが以下だとします。
D:\program_src\python\myapp
コマンドプロンプトで以下のようにします。
(ドライブの移動があるので、/d
オプションを付けています)
cd /d D:\program_src\python\myapp
py -m venv .venv
このコマンドにより、 D:\program_src\python\myapp
配下に .venv
フォルダが作成されます。
あとは venv をアクティベートしてあげればOK。(コマンドは続きから)
.venv\Scripts\activate
すると、コマンドプロンプトがこんな感じになるかと思います。
(.venv) D:\program_src\python\myapp>
こうなったらそのまま pip
が使えます!
(.venv) D:\program_src\python\myapp>pip install requests
抜けるときは、 deactivate
します。
(.venv) D:\program_src\python\myapp>deactivate
これのいいところは、 VSCode でこの .venv フォルダを認識してくれるので Windows 上の Python に直接ライブラリをインストールしなくても flake8 のコード解析が使えるところですね。
プロジェクトごとに色々と pip install している場合に便利です!
ちなみにフォルダの名称を .venv
にしなくても、 VSCode では認識してくれました。
なので、以下でも問題なかったです。
py -m venv hoge
hoge\Scripts\activate
余談
当然ながら、 py
コマンドが使える以上、どこかに py.exe があるはずです。
それを where
で探してみると、以下になりました。
C:\Users\hoge>where py
C:\Windows\py.exe
特に何のひねりもなく、普通の場所にありますね。
Python をインストールした際に、インストール先のフォルダとは関係なく C:\Windows\py.exe
は配置される、ということでしょうかね。
インストール時に何か書いてあるのかもしれませんが・・・
ということで、 Windows 好きがなるべく Windows を使いたいがための記事でした。