Ubuntu 22.04.1 LTSでvenvを作ろうとしたらエラーになった
検証環境としてCentOS 7でDjango3.2で動作する環境を構築しようとしたら色々面倒(python3.8のインストールとか、SQLite周りのエラーの対応)でやめたので、Ubuntuでもいいかなと思い、pythonの仮想環境を構築するときにエラーになった。 利用しないと思うが、CentOS7でDjangoの環境の構築手順も調べておきたいと思う。
$ python3 -m venv venv 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 install python3.10-venv You may need to use sudo with that command. After installing the python3-venv package, recreate your virtual environment. Failing command: ['/home/user/nginx_django/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']
日本語訳(DeepL)
ensurepipが利用できないため、仮想環境が正常に作成されませんでした。 が利用できないため、仮想環境の作成に失敗しました。 Debian/Ubuntuシステムでは、以下のコマンドを使用して、python3-venv パッケージをインストールする必要があります。 apt インストール python3.10-venv このコマンドでは、sudoを使用する必要があるかもしれません。 python3-venvパッケージをインストールしたら、仮想環境を再構築します。 パッケージのインストールが完了したら、仮想環境を再作成します。 失敗したコマンド ['/home/user/nginx_django/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'] となります。
日本語訳(ChatGPT) ChatGPTの翻訳のほうが優秀な気がする。
仮想環境は、ensurepipが利用できないために正常に作成されませんでした。 Debian / Ubuntuシステムでは、次のコマンドを使用してpython3-venvパッケージをインストールする必要があります。 apt install python3.10-venv このコマンドにはsudoを使用する必要がある場合があります。 python3-venvパッケージをインストールした後、仮想環境を再作成してください。 失敗したコマンド:['/home/user/nginx_django/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']
venvの中身をチェックするとたしかに正常に作成されておらず、activateもできない。
$ pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/| /g' /home/user/nginx_django |--venv | |--bin | | |--python | | |--python3 | | |--python3.10 | |--include | |--lib | | |--python3.10 | | | |--site-packages | |--lib64 | |--pyvenv.cfg
エラーメッセージにあったようにpython3.10-venvを入れてから再度venvを作成すると正常にvenv環境ができあがってactivateもできた。
$ sudo apt install python3.10-venv $ python3 -m venv venv
$ pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/| /g' | head -n 20 /home/user/nginx_django |--venv | |--bin | | |--Activate.ps1 | | |--activate | | |--activate.csh | | |--activate.fish | | |--pip | | |--pip3 | | |--pip3.10 | | |--python | | |--python3 | | |--python3.10 | |--include | |--lib | | |--python3.10 | | | |--site-packages | | | | |--_distutils_hack | | | | | |--__init__.py | | | | | |--__pycache__ | | | | | | |--__init__.cpython-310.pyc ...
python3のvenvは標準モジュールだと思っていたので、利用できないことに少し驚いたので忘れないように記載しておく。