Поиск по сайту:

Исправить сломанный пункт для 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".

Вот и все. Наслаждаться!

Статьи по данной тематике