【Python】venvでバージョン指定をする方法を初心者向けにわかりやすく解説
はじめに
Pythonを学び始めると、同じパソコン上で複数のバージョンを切り替えながら使いたい場面が出てくることがあります。
たとえば、あるプロジェクトでは3.10系を使うけれど、別のプロジェクトでは別のバージョンを必要とすることがあるかもしれません。
このような状況をシンプルに管理するためには、 仮想環境 (venv) を使ってバージョンを指定する手法がとても有効です。
今回は、venvで特定バージョンを指定する方法や、その考え方を初心者向けにわかりやすく解説します。
この記事を読むとわかること
- venv とは何か
- Pythonのバージョン指定 を仮想環境で行う方法
- 実務でどのように使うかの具体例
- バージョンを明示することで得られるメリット
- よくあるトラブルシューティングのポイント
venvとは何か
venvは、Pythonに標準で備わっている仮想環境の仕組みです。
インストールされているPythonをベースに、独立した環境を作成します。
仮想環境のメリットとしては、以下のような点が挙げられます。
- プロジェクトごとに異なるライブラリや依存関係を持っていても、干渉しづらくなる
- Python本体やライブラリのバージョンを分けて管理できる
- 不要になった仮想環境ごと削除すれば、クリーンな状態を簡単に保てる
たとえば、ウェブアプリを作るプロジェクトAと、データ解析をするプロジェクトBがあるとしましょう。
それぞれが異なるライブラリバージョンを必要とする場合でも、venvを使って環境を切り替えれば衝突を避けることができます。
venvとPythonバージョン指定が重要な理由
Pythonを使うプロジェクトでは、バージョンが異なると使える機能やライブラリの互換性が変わることがあります。
特に、実務で使われる大きなシステムや、チーム開発ではバージョン差による不具合を最小限に抑えることが大切です。
また、あるフレームワークではPython 3.10以上が必須だが、別のプロジェクトでは3.9でしか動作しないようなケースも考えられます。
こうした場面で「グローバル環境に依存しないPython環境を用意して、動作の再現性を保つ」ことが大切になります。
そこで、特定のバージョンを指定してvenvを作成する方法を知っていると、プロジェクトごとの環境管理を簡単に実現できるでしょう。
Pythonのバージョンを指定する方法
仮想環境を作成するときは、一般的に python -m venv 環境名
のようにコマンドを実行します。
しかし、複数のPythonバージョンがインストールされている場合は、実行する python
コマンドがどのバージョンなのかを明確に把握することが重要です。
pythonコマンドのパスを指定する
もし、パソコン上にPython 3.9とPython 3.10が両方インストールされている場合、以下のように「どのpythonコマンドを使うか」をパスで指定することができます。
# 例:Python 3.10 を明示的に使いたい場合 /usr/bin/python3.10 -m venv myenv
上記のように実行すると、myenv
という名前のフォルダが作成され、その中にPython 3.10をベースにした仮想環境が用意されます。
環境をアクティベートすれば、以降の操作はPython 3.10上で行われるようになります。
アクティベート方法の例 (Linux/macOS)
source myenv/bin/activate
アクティベート方法の例 (Windows)
myenv\Scripts\activate
アクティベート後は、ターミナルやコマンドプロンプトで python --version
を実行してみると、指定したバージョンになっていることが確認できるはずです。
OSのコマンド名で指定する
OSによっては、python3.10
や python3.9
といった名前のコマンドが用意されていることもあります。
この場合、下記のようにコマンドを実行するだけで特定バージョンのPythonが起動されます。
python3.10 -m venv myenv
同じようにアクティベートをすれば、Python 3.10環境を使用できます。
これはWindowsでも類似の方法が用意されているケースがありますが、環境によってコマンド名が異なる場合があるので注意が必要です。
pyenvとvenvの組み合わせ
Pythonのバージョン切り替えには、pyenv というツールが使われることも多いです。
pyenvは、システム全体にインストールされた複数のPythonバージョンを手軽に切り替えるための管理ツールです。
pyenvでバージョン管理し、venvを使う場合
- pyenvでインストールしたいPythonバージョンをインストールする
- シェル上で、そのバージョンを使用するよう指定する
- その状態で
python -m venv myenv
と実行する
たとえば、3.10系のPythonを使うようにpyenvで設定した後にvenvを作れば、そのバージョンを元にした仮想環境が作成されます。
これにより、プロジェクトごとに異なるPythonバージョンを切り替えるのが簡単になるでしょう。
pyenvを併用するメリットは、システムにインストールするPythonのバージョン管理まで一元化できる点です。
そして、venvと組み合わせることで、同じパソコンでもプロジェクトごとにまったく違う環境をすぐに作り出せます。
実務での利用シーン
venvとバージョン指定は、様々な場面で役立ちます。
ここでは、いくつか実務に近い具体例をご紹介します。
ウェブアプリケーションの開発
ウェブアプリケーションのフレームワークには、バージョンによって対応しているPythonバージョンが限られていることがあります。
あるプロジェクトでは3.9系で開発していたが、新しい機能のために3.10系に移行したいケースもあるかもしれません。
そんなとき、過去のプロジェクトと混在しないようにvenvを使うと、移行作業がスムーズになります。
マイクロサービスや複数サービスの統合
企業やチーム開発では、プロジェクトの規模が大きくなると、複数のサービスが連携して動く構成になる場合があります。
一部のサービスだけ新しいバージョンのPythonを使い、残りのサービスは移行準備が整うまで従来のバージョンを使い続ける、という運用も考えられます。
このように、一度に全サービスを同じバージョンに切り替えられないときに、venvの管理が欠かせません。
研究開発や試験的なライブラリ導入
研究開発の現場では、試験的に別バージョンのPythonを使って新しいライブラリを試すことも多いでしょう。
その際にグローバル環境をいじってしまうと、他のプロジェクトへの影響が懸念されます。
そこで仮想環境を作り、そこだけ新バージョンを使って実験するのが安全です。
venv内のPythonバージョンを確認する方法
もし、プロジェクトを進めるうちに「今、この仮想環境で動いているPythonはどのバージョンだろう?」と疑問を持つことがあるかもしれません。
仮想環境をアクティベートした状態で、以下のコマンドを実行するとバージョンをすぐに確認できます。
python --version
もしくは、python -V
と指定する方法もあります。
これで表示されるバージョンが、venvで指定したバージョンかどうかをチェックしましょう。
もし異なるバージョンが表示される場合は、パスの設定を再度確認してみてください。
仮想環境が正しくアクティベートされていなかったり、他のPythonコマンドが先にPATHで優先されている可能性があります。
トラブルシューティングのポイント
venvでバージョン指定をしたにもかかわらず、想定外の動作をする場合があります。
ここでは、よくあるトラブルやその回避策を挙げてみます。
コマンドが見つからない
LinuxやmacOS環境で python3.10
といったコマンドを実行すると「コマンドが見つかりません」と表示される場合があります。
これは、そのバージョンがそもそもインストールされていなかったり、パスが通っていなかったりすることが原因です。
対応策としては、正しい場所にPythonをインストールするか、pyenvのようなバージョン管理ツールを導入してみることが考えられます。
Windowsで複数バージョンが衝突する
Windows環境では、インストール時にパスを設定するかどうかで衝突が起こることがあります。
Python 3.9と3.10の両方をインストールすると、どちらの python.exe
が優先されるかが明確でないことがあるためです。
この場合は、 py -3.9
や py -3.10
など、 py
ランチャーを使う方法も有効です。
# Python 3.10を使いたい場合 py -3.10 -m venv myenv
こうすることで、Windowsでも特定のバージョンを明示してvenvを作成できます。
必要なライブラリがインストールされない
仮想環境をアクティベートしていない状態で pip install ...
を実行してしまうと、グローバル環境にライブラリが入ってしまうことがあります。
その結果、venv内では必要なライブラリが見つからずエラーになるケースもあるでしょう。
対策としては、ライブラリを入れる前にアクティベートを確実に行うことが大切です。
仮想環境をアクティベートするのをうっかり忘れると、グローバル環境にライブラリがインストールされてしまうため注意が必要です。
まとめ
今回は、Pythonの仮想環境(venv)を利用して特定のバージョンを指定する方法を紹介しました。
仮想環境を作るだけであれば、コマンドは非常にシンプルですが、複数のバージョンがインストールされているときは、どのPythonコマンドを使うかを明示してあげることがカギになります。
- システムにインストールされたPythonコマンドのパスを直接指定する
- OSのコマンド名 (
python3.10
やpy -3.10
) を利用する - pyenvなどのバージョン管理ツールと組み合わせる
いずれの方法も、プロジェクト単位で環境を分けたい場合にとても役立ちます。
初心者の方が最初に覚える際には少しだけとっつきにくいかもしれませんが、仮想環境を活用するとプロジェクトのクリーンな管理につながります。
大規模なシステムやチーム開発でも、venvを使ったバージョン指定は当たり前のように行われています。
そのため、まずは身近なサンプルプロジェクトで試し、慣れておくと安心です。
自分が使いたいPythonバージョンと必要なライブラリバージョンを正しく管理することで、トラブルを最小限に抑えつつ開発をスムーズに進められるでしょう。
ぜひ、今日からでも試してみてください。