コンテンツにスキップ

Pythonバージョンの管理方法

[

pyenvを使用してPythonのバージョンを管理する

この記事では、pyenvを使用してPythonの複数のバージョンを管理する方法について解説します。複数のバージョンのPythonを活用し、プロジェクトに貢献する方法や、最新のPythonの利用方法について詳しく学びます。また、Pythonのバージョンを切り替えたり、仮想環境を使用したりする方法も紹介します。

pyenvを使う理由

システムPythonを使わない理由

”システムPython”とは、オペレーティングシステムに最初からインストールされているPythonのことを指します。MacやLinuxを使用している場合、ターミナルでpythonと入力すると、PythonのREPL(Read-Eval-Print Loop)が表示されます。

では、なぜシステムPythonを使わないのでしょうか?ひとつは、このPythonは実際にはオペレーティングシステムに属しているからです。つまり、オペレーティングシステムと一緒にインストールされたものです。実際、whichコマンドを実行すると以下のように表示されます:

ターミナルウィンドウ
$ which python
/usr/bin/python

ここで、python/usr/bin/pythonにあるため、すべてのユーザーが利用できる状態になっています。おそらく、これはあなたが望んでいるPythonのバージョンではないでしょう:

ターミナルウィンドウ
$ python -V
Python 2.7.12

システムPythonにパッケージをインストールするには、sudo pip installというコマンドを実行する必要があります。これは、システムPythonがオペレーティングシステムの一部であるためです。しかし、これは管理が煩雑になる上にセキュリティ上の懸念があります。

pyenvのインストール

pyenvを使用するためには、まずインストールする必要があります。以下にインストール手順を示します。

ビルド依存関係

pyenvをインストールする前に、いくつかのビルド依存関係をインストールする必要があります。これは、pyenvがPythonのビルドに必要な依存関係を満たすためです。

  • Ubuntuの場合:
ターミナルウィンドウ
$ sudo apt-get update
$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev
  • macOSの場合(Homebrewが必要です):
ターミナルウィンドウ
$ brew install openssl readline sqlite3 xz zlib

pyenvのインストーラーを使う

インストール方法はいくつかありますが、ここではpyenv-installerを使用してインストールする方法を説明します。以下のコマンドを実行してください:

ターミナルウィンドウ
$ curl https://pyenv.run | bash

これにより、~/.pyenvディレクトリにpyenvがインストールされます。

pyenvを使用してPythonをインストールする

pyenvを使ってPythonをインストールする方法を学びましょう。以下に手順を示します。

インストール場所

まず、pyenvinstallコマンドを使用して、特定のバージョンのPythonをインストールします。たとえば、最新の安定版のPython 3.9.2をインストールするには、次のコマンドを実行します:

ターミナルウィンドウ
$ pyenv install 3.9.2

インストールにはしばらく時間がかかる場合があります。

新しいPythonの使用

インストールが完了したら、globalコマンドを使用してデフォルトのPythonバージョンを設定することができます。たとえば、以下のコマンドを実行すると、Python 3.9.2がデフォルトのバージョンになります:

ターミナルウィンドウ
$ pyenv global 3.9.2

これにより、pythonコマンドを実行するとデフォルトのPythonバージョンが使用されます。

pyenvコマンドの探索

pyenvコマンドを使ってさまざまな操作を行うことができます。以下にいくつかの主なコマンドを紹介します。

installコマンド

installコマンドは、指定したバージョンのPythonをインストールします。例えば、以下のコマンドでPython 3.8.5をインストールできます:

ターミナルウィンドウ
$ pyenv install 3.8.5

versionsコマンド

versionsコマンドを使用すると、インストールされているPythonのバージョンを確認することができます。以下のコマンドを実行して一覧を表示します:

ターミナルウィンドウ
$ pyenv versions

whichコマンド

whichコマンドを使用すると、現在のPythonのバージョンを確認することができます。以下のコマンドを実行して確認してみましょう:

ターミナルウィンドウ
$ pyenv which python

globalコマンド

globalコマンドを使用すると、デフォルトのPythonバージョンを設定することができます。以下のコマンドでデフォルトのバージョンを設定します:

ターミナルウィンドウ
$ pyenv global 3.8.5

localコマンド

localコマンドを使用すると、特定のディレクトリでのみ使用するPythonバージョンを設定することができます。以下のコマンドで現在のディレクトリでのみPython 3.9.2を使用するように設定します:

ターミナルウィンドウ
$ pyenv local 3.9.2

shellコマンド

shellコマンドを使用すると、新しいシェルで使用するPythonバージョンを設定することができます。以下のコマンドで新しいシェルでPython 3.9.2を使用するように設定します:

ターミナルウィンドウ
$ pyenv shell 3.9.2

Pythonのバージョンを指定する

pyenvを使用すると、Pythonのバージョンを指定することができます。以下のコマンドを使って特定のバージョンのPythonを使用することができます:

ターミナルウィンドウ
$ pyenv shell 3.9.2

このコマンドを実行すると、新しいシェルでPython 3.9.2が使用されます。この設定は一時的なものであり、シェルを閉じると元の設定に戻ります。しかし、pyenv globalpyenv localコマンドを使用すると、デフォルトのPythonバージョンを変更することができます。

仮想環境とpyenv

pyenvは仮想環境との連携もサポートしています。以下では、仮想環境を作成し、使用する方法について説明します。

仮想環境の作成

pyenvを使用して仮想環境を作成するには、pyenv virtualenvコマンドを使用します。以下のコマンドを実行して、名前がmyenvの仮想環境を作成します:

ターミナルウィンドウ
$ pyenv virtualenv 3.9.2 myenv

仮想環境のアクティベート

仮想環境を使用するには、pyenv activateコマンドを使用します。以下のコマンドを実行して、myenv環境をアクティベートします:

ターミナルウィンドウ
$ pyenv activate myenv

このコマンドを実行すると、新しいシェルでmyenv環境がアクティブになります。これにより、pythonpipコマンドを実行すると、myenv環境内で実行されます。

複数の環境での作業

pyenvを使用すると、複数の環境で作業することもできます。それぞれの環境で異なるPythonバージョンを使用することができます。例えば、プロジェクトAではPython 3.8.5を使用し、プロジェクトBではPython 3.9.2を使用する場合、以下の手順で環境を切り替えることができます:

  1. プロジェクトAのディレクトリに移動します。
ターミナルウィンドウ
$ cd /path/to/project_A
  1. Python 3.8.5を設定します。
ターミナルウィンドウ
$ pyenv local 3.8.5
  1. プロジェクトBのディレクトリに移動します。
ターミナルウィンドウ
$ cd /path/to/project_B
  1. Python 3.9.2を設定します。
ターミナルウィンドウ
$ pyenv local 3.9.2

まとめ

この記事では、pyenvを使用してPythonのバージョンを管理する方法について詳しく解説しました。複数のPythonバージョンを簡単に切り替えたり、仮想環境を使用したりすることで、プロジェクト作業を効率的に行うことができます。また、pyenvのさまざまなコマンドや機能についても紹介しました。

Pythonの開発やプロジェクトへの貢献をする際に、pyenvを活用してバージョン管理を行ってみてください。きっと作業効率が向上するでしょう。

この記事の執筆者:Logan Jones