Ubuntu 18.04 LTS の WSL (Windows Subsystem for Linux) で Python 3.7 を使用して venv による環境構築を行った際にエラーが出た場合の対処法をメモとして残しておきます。
環境
- WSL (Ubuntu 18.04)
- Python 3.7
venv 起動によるエラー
エラー画面
venv
を使用して仮想環境を作成しようとした際に以下のエラーが表示されました。
$ python -m venv [project dir]
The virtual environment was not created successfully because ensurepip is not
available. On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.
apt-get install python3-venv
You may need to use sudo with that command. After installing the python3-venv
package, recreate your virtual environment.
Failing command: ['/home/tatsu/doc/testdir/bin/python', '-Im', 'ensurepip', '--upgrade', '--default-pip']
デフォルトの Ubuntu では pip が無効化されている?
ハッキリとした原因は分からなかったのですが、どうやら WSL または Ubuntu ではシステム保護のために pip
がインストールされていない、もしくはインストールされているとしても無効化されているようです。そのため、venv
による仮想環境を作成しようとしたときにエラーが出たと思われます。
$ python -m ensurepip
ensurepip is disabled in Debian/Ubuntu for the system python.
Python modules for the system python are usually handled by dpkg and apt-get.
apt-get install python-<module name>
Install the python-pip package to use pip itself. Using pip together
with the system python might have unexpected results for any system installed
module, so use it on your own risk, or make sure to only use it in virtual
environments.
そこで、 venv
を実行した際のエラーメッセージにも書かれていますが、 python3-venv
のインストールを実行します。
python3-venv のインストール
Python と揃えたバージョンの python3-venv が必要
しかし、私の環境では python3-venv
をインストールしただけでは venv
が機能せず、 Python のバージョンに合わせた python3.7-venv
をインストールする必要がありました。
# python3-venv のインストールでは再びエラーが表示された
$ sudo apt install python3-venv
# 使用している Python と同じバージョンの python3.7-venv が必要
$ sudo apt install python3.7-venv
もしかすると、python3-venv と python3.7-venv の両方必要かもしれない
わたしのメイン環境では、 python3.7-venv
のインストールのみで venv
のエラーは解消されましたが、同じ構成のサブ PC (WSL/Ubuntu18.04 + Python3.7) では python3-venv
と python3.7-venv
の両方をインストールしないと venv
による仮想環境構築が正しく実行されませんでした。
python3.7-venv
をインストールしてもエラーが解消されなかった場合は、両方インストールすることを試してみてください。