Ubuntu 22.04/20.04でPython 3.12用の壊れたpipを修正する
この簡単なチュートリアルでは、Ubuntu 22.04およびUbuntu 20.04でDeadsnakes PPAからPython 3.12をインストールした後に壊れたpipインストーラーを修正する方法を示します。
古いsetuptoolsを使用しているLinuxのPython 3.12では、長らく非推奨されたpkgutil.ImpImporterクラスが削除されたため、pipコマンドが動作しない可能性があります。何かをpip installでインストールしようとすると、動作しないか、次のエラーが出力されます:
ERROR: Exception:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 165, in exc_logging_wrapper
status = run_func(*args)
^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 205, in wrapper
return func(self, options, args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pip/_internal/commands/install.py", line 285, in run
session = self.get_default_session(options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 75, in get_default_session
self._session = self.enter_context(self._build_session(options))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 89, in _build_session
session = PipSession(
^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pip/_internal/network/session.py", line 282, in __init__
self.headers["User-Agent"] = user_agent()
^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pip/_internal/network/session.py", line 157, in user_agent
setuptools_dist = get_default_environment().get_distribution("setuptools")
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pip/_internal/metadata/__init__.py", line 24, in get_default_environment
from .pkg_resources import Environment
File "/usr/lib/python3/dist-packages/pip/_internal/metadata/pkg_resources.py", line 9, in
from pip._vendor import pkg_resources
File "/usr/lib/python3/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2164, in
register_finder(pkgutil.ImpImporter, find_on_path)
^^^^^^^^^^^^^^^^^^^
AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?問題を解決するためには、Python 3.12のpipを手動でインストールする必要があります。そして、作業を行う方法が2つあります。
方法1: ensurepipを使用してpipをインストールする
Pythonには、既存のPythonインストールにpipインストーラをブートストラップするためのサポートを提供する組み込みモジュールensurepipがあります。
まず、キーボードでCtrl+Alt+Tを押してターミナルを開きます。ターミナルが開いたら、次のコマンドを実行します:
python3.12 -m ensurepip --upgradeその後、pip3.12 または python3.12 -m pip コマンドのいずれかを使用して、Python 3.12のpipインストーラーを使用できるようになるはずです。
方法2: get-pip.pyを使用してpipをインストールする
前の方法がうまくいかない場合、Pypa.io は同じことを行うスクリプトを提供しています。
まず、ターミナルを開き(Ctrl+Alt+T)、wgetコマンドを使用してスクリプトをダウンロードするためのコマンドを実行します:
wget https://bootstrap.pypa.io/get-pip.py次に、スクリプトを実行してpipをダウンロードしてインストールします:
python3.12 get-pip.pyインストール後、python3.12 -m pip コマンドを実行して pip インストーラーを使用できます。これを pip3.12 にバインドするには、ただ alias pip3.12="python3.12 -m pip" を実行してください。
それだけです。楽しんでください!

