はじめに
本シリーズではLattixとUnderstandのメトリクスを活用した様々な分析方法を、分析スクリプトとして紹介しております。
大変有難いことに、既に本シリーズは多くの方に閲覧頂いており、本シリーズ記事に関連したご質問、活用実績のご連絡、フィードバックなどを多数いただいております。
その中で、「pythonファイルの実行環境の用意に不安がある」と言ったフィードバックをいただきました。
このため、今回は新しいスクリプトの紹介ではなく、実行環境にフォーカスしていきたいと思います。
今回のテーマは「Pythonスクリプトの実行環境の作成」です。
※本分析ブログ記事は弊社Lattix/Understandチームの有志によって作成されております。
Pythonに馴染みのある方で、本記事の記載にお気づきの点がある方は、ぜひ弊社までご連絡いただけますと幸いです。
前提環境
本記事作成時に弊社側で検証している環境は以下の通りとなります。
- Windows 10
- Python3.12.2 インストール済
※コマンドプロンプトでpython –versionと入力するとPythonのバージョン番号が表示される状態 - requirements.txtが存在する。
(本分析ブログシリーズにおいて公開しているスクリプトに対応するrequirements.txtは、
準備ができ次第、順次対象ブログ記事上に公開していく予定となります。)
Pythonの実行環境を初めて作成される方へ
以下はPythonの実行環境を初めて作成される方向けの説明となっております。
Pythonに馴染みのある方は本節は飛ばし、次の「環境構築手順」から読んでいただいて問題ございません。
「Pythonの環境が汚れる」とは
Pythonで開発をおこなっていると、スクリプト毎にその用途に応じて必要なパッケージが異なることが多々あります。
これにより複数のスクリプトを同じ実行環境で実行しようとすると、スクリプト毎に必要なパッケージやそのバージョンの組み合わせが異なることにより、「環境が汚れる」ことがよくあります。
ここで「環境が汚れる」とは、スクリプトAの実行用のパッケージバージョンとスクリプトBの実行用のパッケージバージョンが混在、もしくはいずれかによって上書きされた状態を差します。
汚れた環境で起こる問題の例 例えば、 ・スクリプトA:PackagePのバージョン1.2以下が必要 ・スクリプトB:PackagePのバージョン1.3以上が必要 であったとします。 この場合、PackagePのバージョン1.0がインストールされた環境で、スクリプトAを実行したあとに、スクリプトBを実行しようとした際、スクリプトBの実行ができないということになります。 このとき、この環境にPackagePのバージョン1.3を上書きインストールしてしまうと、スクリプトBは動作するようになりますが、スクリプトAは動作しなくなってしまいます。
上記例は、スクリプトAとスクリプトBを同じPythonの実行環境で実行しようとしたことにより
発生する問題です。
「環境が汚れる」問題の解決手段
上記の通り、異なる用途のスクリプトを同じ実行環境で実行しようとすると「環境が汚れ」てしまいます。ここで、唯一のPython物理環境で「環境が汚れ」てしまうと今後当該環境でスクリプトの実行ができなくなってしまいます。
Pythonでは「環境が汚れる問題」を解決する手段として、異なる用途のスクリプトをそれぞれ専用の環境で実行するために、仮想環境の仕組みが用意されています。
「Pythonの仮想環境」とは
本稿において、「Pythonの仮想環境」とは、(Pythonの仮想環境を作成するための標準ライブラリの1つである)venvを利用して作成されるPythonの実行環境のことを指します。
venvを利用することで、Pythonでは用途に応じた専用の実行環境を、“実行環境毎にインストールするパッケージなどを物理的に分けて”作成することができます。
(Pythonではこれを仮想環境と呼んでいます。)
※「Pythonの仮想環境」は、VirtualBoxやDocker、クラウドなどにおける、物理的なハードウェアリソースや、OSから提供されるリソースを仮想化した、いわゆるプラットフォームの「仮想環境」とは異なる意味です。
pipとcondaの併用回避について
Pythonのパッケージマネージャーにおいて、よく使われるものにpipとcondaがあります。
pipはPythonを公式サイトからインストールした場合に標準でインストールされるパッケージマネージャーです。
condaはAnacondaやminicondaなど、データサイエンス向けの環境を提供するプラットフォームを利用してPythonの環境を構築する場合に使われるパッケージマネージャーです。
Pythonを使っているとたまに起こる事故なのですが、ここで誤って2つの パッケージマネージャーを同じ実行環境に対して併用してしまうと、管理ツールが異なることによりインストール済のパッケージについて、管理上の一貫性が崩れてしまい、「環境が汚れる」ことがあります。この問題を回避するため、本シリーズにおいてはPython標準のパッケージマネージャーであるpipのみを使用するものとします。
環境構築手順
- venvを使用したPythonの仮想環境を作成します。
- Pythonの仮想環境を作成するディレクトリを作成します。
例)C:\work\pyenvs
※以後の手順において、このディレクトリは複数の仮想環境ディレクトリの
親階層となることを想定しております。
※実際にPythonのスクリプトを実行するワークスペースディレクトリは、
本ディレクトリとは別のディレクトリで作成する想定としてください。 - コマンドプロンプトで上記へ移動します。
例)cd C:\work\pyenvs - Pythonの仮想環境を作成します。
以下の例はsturtevantという名前の仮想環境を作成しています。
例)python -m venv sturtevant
※これにより[C:\work\pyenvs\sturtevant]というディレクトリが作成され、
配下にPythonの仮想環境が作成されます。
- Pythonの仮想環境を作成するディレクトリを作成します。
- 作成した仮想環境を起動します。
- [(環境名)\Scripts\activate.bat]を実行します。
例)C:\work\pyenvs\sturtevant\Scripts\activate.bat
※これにより仮想環境が起動し、コマンドプロンプト上において(環境名)が表示されます。
- [(環境名)\Scripts\activate.bat]を実行します。
- 仮想環境が起動している状態(環境名が表示されている状態)で、パッケージをインストールします。
- requirements.txtを使用して、インストールします。
例)python -m pip install -r requirements.txt
※なお、requirements.txtがなく、新たに作る環境の場合には[pip install (パッケージ名)]を実行します。
- requirements.txtを使用して、インストールします。
上記手順により、スクリプト実行環境としてPythonの仮想環境を作成することが可能です。
また、仮想環境を終了する場合は単にコマンドプロンプトを閉じるか、仮想環境が起動しているコマンドプロンプトにおいて[(環境名)\Scripts\deactivate.bat]を実行することで、仮想環境を終了することが可能です。
(例)C:\work\pyenvs\sturtevant\Scripts\deactivate.bat
- 補足(requirements.txtの出処)
なお補足となりますが、requirements.txtはスクリプト実行可能な既存環境において、
pip freezeコマンドにより出力されたファイルであり、インストールするパッケージ名やそのバージョンが列挙されたものとなります。
(例)python -m pip freeze > requirements.txt
スクリプト実行方法
- 前提
- 当該スクリプト(sample.py)を実行するためのPythonの仮想環境が用意されている
例)[C:\work\pyenvs\sturtevant]配下に作成されている。 - 当該スクリプト(sample.py)を実行するためのワークスペースが作成されている
例)C:\work\python_workspaces\work_sturtevant - 当該スクリプト(sample.py)がワークスペースに配置されている
例)C:\work\python_workspaces\work_sturtevant\sample.py - (iniファイルがある場合)iniファイルもワークスペースに配置されている
例)C:\work\python_workspaces\work_sturtevant\sample.ini
- 当該スクリプト(sample.py)を実行するためのPythonの仮想環境が用意されている
- 実行手順
- コマンドプロンプトを開き、[(環境名)\Scripts\activate.bat]を実行します。
例)C:\work\pyenvs\sturtevant\Scripts\activate.bat - コマンドプロンプト上において、(環境名)の表示が出ている状態で、
ワークスペースに移動します。
例)cd C:\work\workspaces\work_sturtevant - 以下のように実行します。
(引数がない場合)
例)python sample.py
(引き数がある場合)
例)python sample.py arg1 arg2
- コマンドプロンプトを開き、[(環境名)\Scripts\activate.bat]を実行します。
以上の手順により、Pythonのスクリプトを実行することが可能です。
おわりに
今回はPythonの実行環境の作成方法を紹介いたしました。
なお、本分析ブログシリーズにおいてipynb形式で公開しているスクリプトのうち、これに対応するpyファイルやrequirements.txtが公開されていないものは順次当該記事上にアップしていきたいと考えております。
今後ともよろしくお願いいたします。