Windowsで複数のバージョンのPythonをインストールする

スポンサーリンク
Python
スポンサーリンク

普段のPythonの学習は最新バージョンのPythonでしたいけど、特定のライブラリを動かすためには別のバージョンのPythonを使いたいことはありますよね。例えば、TensorFlowではインストーラー毎に対応しているPythonのバージョンが決まっているため、最新バージョンが入っていればよいというわけではありません。ここでは、複数バージョンのPythonのインストールと使い分け方法を考えてみます。

Pythonをバージョン指定でインストール

それでは、Python3.10をインストールしてみます。実はすでにこのPCにはPython3.11が入っています。

> python -V
Python 3.11.0

Pythonは公式ページよりダウンロードします。下記のリンク先から「Download」を選択し、各自のプラットフォームを選択し、バージョンを指定します。ここでは、2022年11月時点でのPython3.10の安定板であるPython3.10.8を選択し、ダウンローダーからインストールします。インストールの時、PATHを追加できますが、PATHの設定はメインで使うバージョンのみにしておいたほうが、無難だと思います。

Pythonランチャーの使用方法

Windowsで実行されるPythonのバージョンはPythonランチャー(py.exe)で制御できます。PythonランチャーはWindows版のPythonをインストールすると、同時にインストールされます。

コマンド機能
pyインストールしている最新版のPythonを実行する。
py -0インストールしているPythonのバージョンを示す。
Py -3.10(Python3.10.xをインストールしている場合、)Python3.10を実行する。

インストールしているPythonのバージョンは「py -0」で確認できます。ここではPython3.11と3.10がインストールされており、デフォルトのPythonのバージョンとして、Python3.11が設定されていることがわかります。

> py -0
 -V:3.11 *        Python 3.11 (64-bit)
 -V:3.10          Python 3.10 (64-bit)

例えば、Python3.10は、「Py -3.10」のように「py -3.x」(xはPythonのバージョン)とすることで、実行できます。

> py -3.10
Python 3.10.8 (tags/v3.10.8:aaaf517, Oct 11 2022, 16:50:30) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

特定のバージョンのPython仮想環境構築

Pythonランチャーとvenvを組み合わせることによって、簡単にPythonの開発の仮想環境を構築できます。まず、ターミナルで開発環境を作成したいフォルダまで移動します。そこでPythonランチャーでPythonのバージョンを指定して、venvにより開発環境を作成します。下の例ではsample_envという名前の環境を作成します。

> cd venv_test
> py -3.10 -m venv ./sample_env
> cd sample_env

引き続いて、作成した開発環境をアクティベートします。PowerShellの「.\Scripts\Activate.ps1」でアクティベートできます。しかし、ps1などのスクリプトファイルはPowerShellではセキュリティ設定によって実行できないように制限されている(Restricted)ので、実行するためにはセキュリティ設定を変えてやる必要があります。

> .\Scripts\Activate.ps1
.\Scripts\Activate.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル D:\venv_test\samp
le_env\Scripts\Activate.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microso
ft.com/fwlink/?LinkID=135170) を参照してください。
> Get-ExecutionPolicy
Restricted

ここでは、下記のようにスクリプトを実行できるように設定します。スクリプトの実行制限については、下のQiitaの記事に詳しく説明されていますので、しっかりリスクを認識した上で設定をお願いします。(セキュリティが気になる人はScopeをProcessに設定すると良いです。)

> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
> Get-ExecutionPolicy
RemoteSigned

参考

それでは、「.\Scripts\Activate.ps1」で仮想環境に入っていきます。

> .\Scripts\Activate.ps1
(sample_env) > python -V
Python 3.10.8
(sample_env) >

仮想環境へのライブラリのインストール

まず、pipとsetuptoolsを最新版にします。

(sample_env) > python -m pip install -U pip setuptools
....
Successfully installed pip-22.3.1, setuptools-65.5.1

引き続いて、ライブラリをインストールします。ここでは、ひとつずつインストールするのではなく、「requirements.txt」から必要なライブラリを一括してダウンロードします。現在のディレクトリに「requirements.txt」を作成します。例えば、ここではnumpyとpytorch、tqmd、more-itertoolsとバージョンを指定してtransformersとffmpeg-pythonをインストールしてみます。

numpy
torch
tqdm
more-itertools
transformers>=4.19.0
ffmpeg-python==0.2.0

「-r」をつけて、「pip install」でrequirements.txtを指定することで一括でインストールできます。

(sample_env) > pip install -r requirements.txt
...
Successfully installed certifi-2022.9.24 charset-normalizer-2.1.1 colorama-0.4.6 ffmpeg-python-0.2.0 
filelock-3.8.0 future-0.18.2 huggingface-hub-0.11.0 idna-3.4 more-itertools-9.0.0 numpy-1.23.4 
packaging-21.3 pyparsing-3.0.9 pyyaml-6.0 regex-2022.10.31 requests-2.28.1 tokenizers-0.13.2 
torch-1.13.0 tqdm-4.64.1 transformers-4.24.0 typing-extensions-4.4.0 urllib3-1.26.12

「pip list」でインストールしたライブラリを確認します。Pythonのバージョンとrequirements.txtで同じPythonの環境を再現できます。

(sample_env) > pip list
Package            Version
------------------ ----------
certifi            2022.9.24
charset-normalizer 2.1.1
colorama           0.4.6
ffmpeg-python      0.2.0
filelock           3.8.0
future             0.18.2
huggingface-hub    0.11.0
idna               3.4
more-itertools     9.0.0
numpy              1.23.4
packaging          21.3
pip                22.3.1
pyparsing          3.0.9
PyYAML             6.0
regex              2022.10.31
requests           2.28.1
setuptools         63.2.0
tokenizers         0.13.2
torch              1.13.0
tqdm               4.64.1
transformers       4.24.0
typing_extensions  4.4.0
urllib3            1.26.12

開発環境から本番環境にパッケージの出力

逆に開発環境から本番環境にrequirements.txtを出力する場合は、pip freezeでインストールしているパッケージの一覧が表示されるので、その内容を「>」を用いて、ファイルにダイレクトに出力できます。下の例では一旦output.txtに出力しています。出力したテキストの中身を確認し、不要なものを削除したり、バージョン指定の必要ないものは「==」以下を消したりして整形して、requirements.txtを準備できます。

(sample_env) > pip freeze
certifi==2022.9.24
charset-normalizer==2.1.1
colorama==0.4.6
ffmpeg-python==0.2.0
filelock==3.8.0
future==0.18.2
huggingface-hub==0.11.0
idna==3.4
more-itertools==9.0.0
numpy==1.23.4
packaging==21.3
pyparsing==3.0.9
PyYAML==6.0
regex==2022.10.31
requests==2.28.1
tokenizers==0.13.2
torch==1.13.0
tqdm==4.64.1
transformers==4.24.0
typing_extensions==4.4.0
urllib3==1.26.12
(sample_env) > pip freeze > requirements.txt

最後に

Pythonランチャーやvenvを使ったバージョンやパッケージの管理をまとめてみました。AIなどの配布の環境を構築するのにも便利ですね。

Python
スポンサーリンク
鷹の目週末プログラマー

コメント