0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python の環境管理ツールを使ってみた

Last updated at Posted at 2025-08-01

はじめに

自分も Python を使い始めました。記事を見ていると pyenvvenv を使って書かれていることがあります。
それらのコマンドを説明している記事は多いのですが、それを実行すると「何が起きているのか」説明している記事はほぼありません。そこに着目して調べてみました。

素の Python を使う

例えば Ubuntu Linux は、標準で Python がインストールされています。OS 自身の機能のためですね。
Python 環境のインストール場所を確認してみます。Google Compute Engine で作成した Ubuntu Linux 22.4.5 の場合、

  • python3 コマンドは /usr/bin/python3 です。これは /usr/bin/python3.10 へのリンクでした。
  • python コマンドが参照するライブラリは、/usr/bin/python3.10 ディレクトリにあります。
  • pip でインストールしたパッケージは /usr/lib/python3/dist-packages/ に入ります。

上記の通り Ubuntu 22.4.5 にインストールされているのは Python 3.10 でした。例えば Python 3.11 を利用したいときはどうしたらいいでしょうか。

$ sudo apt install 3.11

OS のパッケージマネージャを使って別のバージョンの Python をインストールすればよさそうです。↑

  • python3 コマンドは /usr/bin/python3 で、/usr/bin/python3.11 へのリンクになりました。
  • python コマンドが参照するライブラリは、/usr/bin/python3.11 ディレクトリにあります。
  • pip でインストールしたパッケージは /usr/lib/python3/dist-packages/ に入ります。

Python 3.10 は残っていますが、python3 コマンドは Python 3.11 に切替わります。Python 3.10 は OS 自体の機能のためにインストールされていました。Python 3.11 にしてしまって問題ないでしょうか。

pyenv を使う

既存の Python 環境を残して、別のバージョンの Python をインストールして切替して利用するのに、pyenv を利用できます。

pyenv/pyenv: Simple Python version management

公式サイトで指示された手順でインストールします。さらにインストール先にパスを通しておきます。

pyenv/home/(ユーザ名)/.pyenv にインストールされます。

以下のコマンドで別のバージョンの Python をインストールできます。

$ pyenv install (バージョン番号)
  • python コマンドは /home/(ユーザ名)/.pyenv/versions/(バージョン番号)/bin/python で、/home/(ユーザ名)/.pyenv/versions/(バージョン番号)/bin/python(バージョン番号) へのリンクです。
  • python コマンドが参照するライブラリは、/home/(ユーザ名)/.pyenv/versions/(バージョン番号)/lib/ ディレクトリにあります。
  • pip でインストールしたパッケージは /home/(ユーザ名)/.pyenv/versions/(バージョン番号)/lib/python(バージョン番号)/site-packages/ に入ります。

上記の手順で別のバージョンの Python をインストールしましたが、このまま python コマンドを実行すると従来の Python が呼出されます。
追加したバージョンの Python を有効にする設定します。↓

$ pyenv global (バージョン番号)
  • /home/(ユーザ名)/.pyenv/version ファイルにバージョン番号がセットされます。
  • python コマンドで /home/(ユーザ名)/.pyenv/versions/(バージョン番号)/bin/python が実行されるようになります。

OS 全体で切替するのでなく、特定のプロジェクトで特定のバージョンの Python を使いたいときがあります。そのプロジェクトのディレクトリに移動して、特定のバージョンを有効にする設定します。↓

$ pyenv local (バージョン番号)
  • そのディレクトリに .python-version ファイルが作成されてバージョン番号がセットされます。
  • python コマンドで /home/(ユーザ名)/.pyenv/versions/(バージョン番号)/bin/python が実行されるようになります。

pyenv がインストールされた環境では、python コマンドを実行したとき

①カレントディレクトリに .python-version ファイルがあれば、その設定に従う
②それがなければ、/home/(ユーザ名)/.pyenv/version があれば、その設定に従う
③それもなければ、素の Python が呼出される

venv を使う

pyenv を使うと、使用する Python のバージョンをプロジェクトごとに指定できるようになります。そのとき pip でインストールしたパッケージは、使用しているバージョンの Python 環境にインストールされます。
インストールするパッケージのバージョンを、プロジェクトごとに指定したいときは、venv が使えます。

venv は、バージョン 3.3 以降の Python の機能です。

以下のコマンドで「仮想環境」を作ります。

$ python -m venv (仮想環境名)

上記のコマンドを実行したディレクトリに、指定した仮想環境名のディレクトリが作成されます。

  • python コマンドは (仮想環境のディレクトリ)/bin/python です。これは上記のコマンドを実行した時点の python コマンドへのリンクです。
  • python コマンドが参照するライブラリは、リンク先の Python 環境です。
  • pip でインストールしたパッケージは (仮想環境のディレクトリ)/lib/site-packages/ に入ります。

上記の手順で「仮想環境」を作成しましたが、python コマンドを実行したとき従来の Python 環境が参照されます。
作成した「仮想環境」を有効にする設定します。↓

$ source (仮想環境のディレクトリ)/bin/activate

指定した仮想環境のディレクトリにパスが通され、優先されるようになります。どこのディレクトリで python コマンドを実行しても、上記で指定された「仮想環境」が参照されます。ターミナルソフトのプロンプトが変わります。↓

(仮想環境名) $ 

プロジェクトごとのディレクトリに「仮想環境」を作成してもいいでしょう。プロジェクトのディレクトリに移動して

$ python -m venv .venv

上記のコマンドを実行したディレクトリに、.venv ディレクトリが作成されます。
以下のコマンドで「仮想環境」が有効になります。

$ .venv/bin/activate

このとき、プロジェクトのディレクトリから別のディレクトリに移動すると、仮想環境が無効になるといいのですが、そうはなりません。pyenv と挙動が違いますね。

「仮想環境」を無効にするには

(仮想環境名) $ deactivate

pipenv を使う

pyenvvenv を使って、Python のバージョンとパッケージを管理できました。これと別の環境管理ツール pipenv を使っている記事がありました。

pypa/pipenv: Python Development Workflow for Humans.

公式サイトで指示された手順でインストールします。
pipenv は Python のパッケージとしてインストールするようです。

プロジェクトのディレクトリに移動して、以下のコマンドで「仮想環境」を作成します。

$ pipenv install

そのディレクトリに PipfilePipfile.lock ファイルが作成されます。
加えて /home/(ユーザ名)/.local/share/virtualenvs/(プロジェクト名)/ フォルダが作成されます。

上記のコマンドを実行した時点のバージョンの Python が、仮想環境で使用されるよう記録されます。
特定のバージョンの Python を指定して仮想環境を作成するには

$ pipenv install --python (バージョン番号)

インストール済の Python を選択できます。インストール済でないバージョンを指定するとエラーになりますが、pyenv が導入されていれば呼出して指定したバージョンをインストールするようです。

  • python コマンドは /home/(ユーザ名)/.local/share/virtualenvs/(プロジェクト名)/bin/python で、既存の Python へのリンクです。
  • python コマンドが参照するライブラリは、リンク先の Python 環境です。

以下のコマンドでパッケージをインストールします。

$ pipenv install (パッケージ名)
  • パッケージは /home/(ユーザ名)/.local/share/virtualenvs/(プロジェクト名)/lib/python(バージョン番号)/site-packages/ に入ります。

pipenv で「仮想環境」を作成しましたが、python コマンドを実行したとき従来の Python 環境が参照されます。
作成した「仮想環境」を有効にする設定します。↓

$ pipenv shell

指定した仮想環境のディレクトリにパスが通され、優先されるようになります。どこのディレクトリで python コマンドを実行しても、上記で指定された「仮想環境」が参照されます。ターミナルソフトのプロンプトが変わります。↓

(仮想環境名) $ 

指定した「仮想環境」を無効にするには

(仮想環境名) $ exit

仮想環境の有効化しないで、プロジェクトのディレクトリで、以下の要領でコマンドを実行することもできます。

$ pipenv run (コマンド)

uv を使う

pyenvvenv または pipenv で十分そうですが、uv がいいと言われているようです。

GitHub - astral-sh/uv: An extremely fast Python package and project manager, written in Rust.

公式サイトで指示された手順でインストールします。
uv/home/(ユーザ名)/.local/bin にインストールされます。pip でインストールすることもできるようです。

以下のコマンドで別のバージョンの Python をインストールできます。pyenv と似ています。

$ uv python install (バージョン番号)
  • python コマンドは /home/(ユーザ名)/.local/share/uv/python/(パッケージ名)/bin/python で、/home/(ユーザ名)/.local/share/uv/python/(パッケージ名)/bin/python(バージョン番号) へのリンクです。
  • python コマンドが参照するライブラリは、/home/(ユーザ名)/.local/share/uv/python/(パッケージ名)/lib/ ディレクトリにあります。

上記の手順で別のバージョンの Python をインストールしましたが、このままで python コマンドを実行すると従来の Python が呼出されます。

プロジェクトのディレクトリに移動して、以下のコマンドで「仮想環境」を作成します。

$ uv venv

上記のコマンドを実行したディレクトリに、.venv ディレクトリが作成されます。venv と同じですね。

あるいは、プロジェクトを作成したいディレクトリに移動して、以下のコマンドで「プロジェクト」を作成します。

$ uv init (プロジェクト名)

指定したプロジェクト名のディレクトリが作成され、そのディレクトリに pyproject.toml ファイルなどが作成されます。pipenv に似ています。

上記のコマンドを実行した時点のバージョンの Python が、仮想環境で使用されるよう記録されます。
特定のバージョンの Python を指定して仮想環境を作成するには

$ uv venv --python (バージョン番号)

あるいは

$ uv init (プロジェクト名) --python (バージョン番号)

指定したディレクトリに .python-version ファイルが作成されてバージョン番号がセットされます。pyenv と同じですね。

「仮想環境」にパッケージをインストールするには

$ uv add (パッケージ名)
  • パッケージは (プロジェクトのディレクトリ)/.venv/lib/python(バージョン番号)/site-packages/ に入ります。

「仮想環境」を有効にしないと、指定したバージョンの Python や、追加したパッケージが使用できません。venv と同じですね。

pipenv のように、仮想環境の有効化しないで、プロジェクトのディレクトリで、以下の要領でコマンドを実行することもできます。

$ uv run (ソースファイル)

あるいは

$ uv run (コマンド)

ツールを比較する

上記のツールの仕様の一部を比較してみます。

ツール 追加される Python の場所 プロジェクトの仮想環境の有効化 仮想環境を有効化しないで パッケージが入る場所
pyenv /home/(ユーザ名)/.pyenv/versions/(バージョン番号)/ なし なし /home/(ユーザ名)/.pyenv/versions/(バージョン番号)/lib/python(バージョン番号)/site-packages/
venv なし $ (プロジェクトのディレクトリ)/.venv/bin/activate なし (プロジェクトのディレクトリ)/.venv/lib/site-packages/
pipenv pyenv を使う $ pipenv shell $ pipenv run (コマンド) /home/(ユーザ名)/.local/share/virtualenvs/(プロジェクト名)/lib/python(バージョン番号)/site-packages
uv /home/(ユーザ名)/.local/share/uv/python/(パッケージ名)/ venv と同じ $ uv run (コマンド) (プロジェクトのディレクトリ)/.venv/lib/python(バージョン番号)/site-packages/
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?