リファクタリングをPythonで実践!基本手法とコード例・注意点まで
Windows、Mac、LinuxなどのOSに関係なく、Pythonでプログラムを作成する際は「仮想環境」を作成した上で
作業することが勧められています。
Python初学者向けに仮想環境が必要な理由、作成・実行方法などを、WindowsとMac両方のパターンでご紹介します。
1.venvとは?
Pythonで仮想環境といえば標準モジュールの「venv」が有名です。仮想環境や「venv」についてご紹介します。
①Pythonの仮想環境とは
Pythonの「仮想環境」とは、システムにあるPythonの環境とは別の実行環境のことをいいます。
わざわざ仮想的な空間(エリア)を用意する目的としては、
・システムのPython環境は変えたくない
・ひとつのシステム内で異なるPythonの環境(違うバージョンなど)を実行したい
・プロジェクト単位でライブラリを管理したい
などが挙げられます。
Pythonで仮想環境を作成する方法は比較的簡単で、Python3.3以降は標準モジュールの「venv」を使用すると仮想環境を作成できます。
②なぜ仮想環境が必要なのか
「やっとPythonをインストールしたのに、まだプログラムを始める前にやることがあるの?」と仮想環境の作成を躊躇される方も少なくないと思います。
後で後悔しないためにも「仮想環境の必要性」をもう少し詳しくお伝えします。
Pythonのライブラリを使用する場合は仮想環境が必要
筆者自身、過去には仮想環境なしで「pip install 〇〇」とPythonライブラリをインストールし、プログラムを作成していました。
そして少しPythonにも慣れてきて、AI系のTensorFlowやKerasといった複雑なライブラリをインストールしようとしました。
しかしKerasなど一部のライブラリは「pip install 〇〇」としてもエラーがでてインストールできません。原因を確認しようにもその時のインストール済みライブラリ数は200を超えていて、どのライブラリがどう影響しているのかわからない状態…。
こうした事態を防ぐためにも、プロジェクト毎に「仮想環境」を用意することが勧められています。
Pythonのバージョンを変える必要があることも考えられるため
通常Pythonのバージョンは、システムにインストールしたひとつのPythonバージョンを利用します。例えばPythonバージョン3.9などです。
これで問題なくプログラムを作成できればいいのですが、中にはPythonライブラリの更新が止まっていて、少し前のPythonバージョンしか対応していないライブラリも存在します。
対象のPythonライブラリを自分のPythonバージョンに適合するよう、自身で書き換えられればいいですが、時間と労力が伴います。こういった場合の手っ取り早い対応策としては、実行するPythonのバージョンをライブラリに合わせ、少し古いPythonを使う方法です。
AnacondaやpyenvなどでPythonを動かしている場合は、「仮想環境」毎にPythonのバージョンを変えられるので、上記のようなケースも難なく対応できます。
プロジェクト毎に必要なライブラリを管理できる
Python以外のPHPやNode.jsは、ライブラリをインストールするとプロジェクトフォルダ内にライブラリのフォルダが自動で作成されます。
そのため仮想環境がなくてもライブラリをプロジェクト毎に管理できるのです。
Pythonの場合、仮想環境なしでライブラリをインストールすると、システムのPythonにインストールされ、プロジェクトにどのライブラリを使用しているかがわかりにくくなります。
プロジェクトがふたつあれば、それぞれに必要なライブラリが共存し、どのライブラリがどのプロジェクトに必要かがよりわかりにくくなりますね。
こうした事態を避けるためにもプロジェクト毎に仮想環境を作成しておくと、どのプロジェクトにどんなライブラリが使われているか管理しやすくなるでしょう。
2.仮想環境の作り方・venvの使い方
実際に仮想環境を作成し、使う方法をご紹介します。
WindowsについてはWindows10もWindows11も同じ手順となります。
紹介画面の使用環境
・Pythonはpython.orgからインストールした素のPython3.9
・テキストエディタはVisual Studio Code
・WindowsはPowerShellでコマンド操作
①プロジェクトディレクトリの作成
(画像:Mac PC)
ドキュメントや書類フォルダなど任意のフォルダ内にプロジェクトフォルダを作成します。今回は「仮想環境の学習」というプロジェクトフォルダを作成しました。
そして作成したフォルダをVisual Studio Codeにドラッグ&ドロップ。
ドラッグ&ドロップ後は、Visual Studio Code 画面左に作業ディレクトリ名「仮想環境の学習」が表示されていることが確認できます。
あとはVisual Studio Codeメニューバーの「ターミナル→新しいターミナル」を選択すると、画面下にターミナルが表示されます。
②Pythonのバージョンを選ぶ
仮想環境で使用するPythonのバージョンは、通常システムのPythonバージョンに依存します。
現在のPythonのバージョンを確認しておきましょう。
コマンド python3 -V
結果 Python 3.9.5
③新しい仮想環境の作成
仮想環境を作成するコマンドは、WindowsとMac同じです。
コマンド python3 -m venv env
もしくは コマンド python -m venv env
最後のenvは仮想環境名になり、「env」や「venv」などが名称としては一般的です。
コマンドを実行すると、envフォルダが生成されます。
④仮想環境の有効化
仮想環境を有効にするためには以下のコマンドを実行します。
Windows(PowerShell)
コマンド env\Scripts\Activate.ps1
Mac
コマンド source env/bin/activate
コマンド実行後は、コマンドラインの冒頭に仮想環境名が表示されていますね。
これで仮想環境が有効になりました。
仮想環境の有効化コマンドはOSによって異なりますが、この後に紹介する各種コマンドはOSに関係なく同じです。
⑤パッケージのインストール
仮想環境内にPythonライブラリをインストールしてみます。
Visual Studio Codeのターミナルに「pip install pandas」と入力し、実行してみましょう。
「pip install pandas」を実行してしばらくすると「Successfully installed…」とインストールが完了した旨が表示されます。
黄色のWARNIGは、「使用しているpipのバージョンが古いですよ。アップデートしましょう」という警告文です。警告文内にある「python3 -m pip install –upgrade pip」を実行しておくと解消されます。
実際にライブラリが入ったかどうかは、ターミナルに「pip list」と入力し実行すると、pandasをはじめ関連するライブラリがインストールされたことが確認できます。(上図下段)
⑥仮想環境のコピー
作成した仮想環境を別のプロジェクトでも使いたい場合は、仮想環境フォルダ(env)をコピーし、別のプロジェクトフォルダ内に貼り付ければ仮想環境を利用できます。
ただ仮想環境フォルダはサイズが大きくなりやすいため、そのままのフォルダを流用する方法は合理的ではありません。
仮想環境にインストールしたライブラリは、「requirements.txt」という決まった名称のファイルに記載することで管理しやすくなります。
「requirements.txt」は以下のコマンドを実行すると自動で生成できます。
コマンド pip freeze > requirements.txt
そしてrequirements.txtを別のフォルダ(今回はフォルダ名:TEST)に貼り付け、作業ディレクトリを移動。続いて以下のように「仮想環境作成」「仮想環境起動」「ライブラリのインストール」を実行します。
- 仮想環境作成 python3 -m venv env
- 仮想環境起動 source env/bin/activate (Windowsの場合は env\Scripts\Activate.ps1 )
- ライブラリのインストール pip install -r requirements.txt
するとコピー元と同じライブラリ群がインストールされますね。
「requirements.txt」でライブラリを管理しますので、容量の大きいenvフォルダなどなくても仮想環境を複製しやすくなります。
⑦仮想環境の無効化
仮想環境を使用しない場合や切り替える場合は、以下のコマンドを実行します。
コマンド deactivate
コマンド実行後は、ターミナルの行最初にあった仮想環境名がなくなっていることが確認できるでしょう。
また仮想環境内でインストールしたpandasなども、仮想環境外では存在しないことが確認できます。
⑧仮想環境の削除
仮想環境を1から作り直したい場合などは、仮想環境を削除するか別名称の仮想環境を作成することを勧めます。
仮想環境の削除については、仮想環境フォルダ(今回の場合はフォルダ名:env)を削除すれば完了です。