Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

VS Codeでvenv作成時にエラーが出たときの対処メモ

0
Posted at

はじめに

VS CodeでPythonの仮想環境を作成しようとした際、エラーが発生しました。

今回は、仮想環境の作成とpipのインストールを分けて実行することで解決しました。

その際に、venv を作成するときに内部で ensurepip が実行されることを知ったので、そのあたりを備忘録としてまとめます。

通常の仮想環境作成

Pythonでは、以下のコマンドで仮想環境を作成できます。

python -m venv venv

このコマンドでは、仮想環境を作成するだけではなく、その中にpipも導入されます。

ここで少し分かりにくかったのが、venvpip の関係です。

venv はPythonの仮想環境を作成するための仕組みで、pipはPythonパッケージを管理するためのツールです。

そして、venv の作成時にはデフォルトで ensurepip が実行され、作成した仮想環境にpipが導入されます。

イメージとしては、

python -m venv venv
        ↓
仮想環境を作成
        ↓
ensurepipを実行
        ↓
仮想環境内にpipを導入

という流れです。

今回のエラー

今回はVS Codeから仮想環境を作成した際にエラーが発生しました。

そこで、仮想環境の作成自体に問題があるのか、それとも作成時に行われるpipの導入部分で問題があるのかを切り分けることにしました。

--without-pip を指定すると、pipを導入せずに仮想環境だけを作成できます。

python -m venv venv --without-pip

これで、

仮想環境の作成
        ↓
pipの導入を行わない

という状態になります。

その後、仮想環境を有効化してから ensurepip を実行しました。

python -m ensurepip --upgrade

これによって、仮想環境の作成とpipの導入を別々に実行できます。

pipとensurepipの整理

今回のことで、それぞれの役割を整理すると分かりやすくなりました。

venv

Pythonの仮想環境を作成するための仕組みです。

python -m venv venv

ensurepip

Pythonに用意されているモジュールで、環境にpipを導入するために使用します。

python -m ensurepip --upgrade

pip

Pythonパッケージをインストール・管理するためのツールです。

python -m pip install requests

つまり、

venv
└─ 仮想環境を作成する

ensurepip
└─ その環境にpipを導入する

pip
└─ パッケージを管理する

という関係になります。

今回の解決方法

今回はこちらの手順で解決しました。

# pipなしで仮想環境を作成
python -m venv venv --without-pip

# 仮想環境を有効化
.\venv\Scripts\Activate.ps1

# pipを導入
python -m ensurepip --upgrade

# pipを確認
python -m pip --version

普段は、

python -m venv venv

で仮想環境とpipをまとめて用意できます。

今回はVS Codeでエラーが発生したため、

python -m venv venv --without-pip

python -m ensurepip --upgrade

に分けて実行しました。

まとめ

今回のエラーをきっかけに、venv を作成するときにpipの導入まで行われていることを理解しました。

通常は、

python -m venv venv

で問題ありません。

一方で、仮想環境の作成時にエラーが発生した場合は、

python -m venv venv --without-pip
python -m ensurepip --upgrade

のように、仮想環境の作成とpipの導入を分けて実行することで、どの処理で問題が起きているのかを切り分けられます。

今回のようなエラーが出たときのために、この手順をメモしておきます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?