skydum

個人的な作業記録とか備忘録代わりのメモ

Ubuntu 22.04.1 LTSでvenv

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は標準モジュールだと思っていたので、利用できないことに少し驚いたので忘れないように記載しておく。