Исправить сломанный пункт для Python 3.12 в Ubuntu 22.04/20.04
В этом простом руководстве показано, как исправить сломанный установщик pip после установки Python 3.12 из Deadsnakes PPA в Ubuntu 22.04 и Ubuntu 20.04.
Из-за удаления давно устаревшего класса pkgutil.ImpImporter
команда pip может не работать для Python 3.12 в вашем Linux со старыми инструментами настройки. Он либо просто не работает, либо выдает следующую ошибку при установке чего-либо через 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'?
Чтобы решить эту проблему, вам просто нужно вручную установить pip для Python 3.12. И вот как выполнить эту работу двумя способами.
Способ 1. Установите pip через обеспечения pip.
Python имеет встроенный модуль ensurepip
, обеспечивающий поддержку загрузки установщика pip в существующую установку Python.
Сначала нажмите Ctrl+Alt+T на клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду:
python3.12 -m ensurepip --upgrade
После этого вы сможете использовать установщик pip для Python 3.12 с помощью команды pip3.12
или python3.12 -m pip
.
Способ 2. Установите pip через get-pip.py.
Если предыдущий метод вам не подходит, 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"
.
Вот и все. Наслаждаться!