venvを使っていないとき
俺:いろいろな事情でExcelファイルを読み込んでCSVにしてさらにExcelの形式にしてさらにCSVにするツールが必要になってしまった…。
俺:どうしてわざわざExcelファイルを経由するんだ…!? まあいっかー。
俺:Excelファイルを扱うとなると、Pandas
がいいかなあ。pip install
っと……。
通りすがりの先輩:Pythonを使うときは、venvを使うと便利だぞ!
俺:venv
……?
venvを使うと、仮想環境を作ってそこで動かせるのかー。
いや、Excelファイルを読み込んでCSVにしてさらにExcelの形式にしてさらにCSVにするツールなんてもう二度と触る気はないし、別に使わなくてもいいか。
~数年後~
俺:まさかExcelファイルを読み込んでCSVにしてさらにExcelの形式にしてさらにCSVにする機会が再び来るとは……。
前作った便利ツールなかったっけ?
あっ、Pythonのバージョンが上がってるせいで動かせない。
このとき使ってたバージョンっていくつだっけ?
一瞬だけ動いてほしいだけなんだけどな……。
あのときvenvをやっておいたら……。
Pythonを使うときは、venvを使うと便利だぞ!
というわけで、ちゃんとvenvやrequirements.txtを使用して動く環境を作っておくと、便利です。
(使用しなくても開発はできますが、便利)。
個人的には、 「あとあとでも確実に動かせる環境が手に入る」 という便利さが、あとから効いてくる機会が多かったです。人に提供するときも便利です。
venvとは
venvは軽めの仮想環境を作るための仕組みです。
Python3.3から追加された機能です。
Pythonの最新版は今(2024/6/20)、3.12.4なので結構前です。
仮想環境を作る仕組みはほかにもありますが、標準の機能なのでお手軽で便利です。
使い方
- Pythonの仮想環境を作成
まず、プロジェクトのディレクトリを作成し、そのディレクトリに移動します。
以下の例ではmy_projectという名前でフォルダを作っています。
mkdir my_project
cd my_project
python -m venv venv
フォルダをのぞいてみると、venv用にいろいろできています。
- 仮想環境を有効化
作成した仮想環境を有効化します。
Windowsの場合:
venv\Scripts\activate
macOS/Linuxの場合:
source venv/bin/activate
前の手順で作成されたScripts内のactivate.batを起動するのと同じです。
仮想環境が有効化されると、コマンドプロンプトが (venv) で始まるようになります。
タイポでmaiiiiiin.pyになっている気がするがまあいいや。
- 必要なパッケージをインストール
仮想環境が有効化された状態で、必要なパッケージをインストールします。
pip install パッケージ
と、ひとつひとつやってもいいのですが、
requirements.txt
にパッケージを記述しておいて、一コマンドでインストールできるようにすると便利です。
pip install -r requirements.txt
あとはmain.pyなど適当なファイルを作って仮想環境内で実行していきます。
うれしい点
Pythonでは、なんかしようと思ったとき、だいたいやりたいことをやらせてくれるパッケージがあります。
(C#でもNugetで便利なものをインストールして使用する機会はありますが、Pythonではやりたいことすべてにあるので衝撃的でした。ライセンスには注意しましょう)。
例えばCSVやExcelを扱おうと思ったとき、画像を加工しようとしたとき、音声や動画ファイルを扱おうと思ったとき、「このパッケージを入れたら便利だなあ~」というのに出くわします。
pip install パッケージ名
で入れるかと思います。
このパッケージはかなり便利ですが、新しいPythonのバージョンには対応してなかったり、古い関数をやめたので新しい関数にしてほしいとか 、使っているといろいろなトラブルが襲い掛かってきます。
メインマシンでPythonのバージョンを下げたり、あえて古いバージョンのパッケージを入れたりしないとならなくなってくると本当に大変です。
あっちのスクリプトはバージョン下げないと動かないけどこっちは最新版が入ってるとか、管理しきれません。
仮想環境の中だったら気にせず使用することができるため便利。
その他
※本記事はQmonus Value Streamの投稿キャンペーン記事です。