Réparer Pip cassé pour Python 3.12 sous Ubuntu 22.04/20.04
Ce tutoriel simple montre comment réparer l'installateur pip cassé après avoir installé Python 3.12 à partir de Deadsnakes PPA sur Ubuntu 22.04 et Ubuntu 20.04.
En raison de la suppression de la classe pkgutil.ImpImporter longtemps dépréciée, la commande pip peut ne pas fonctionner pour Python 3.12 sur votre Linux avec d'anciennes setuptools. Soit cela ne fonctionne pas du tout, soit elle affiche l'erreur suivante lors de l'installation de quoi que ce soit via 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'?Pour résoudre le problème, vous devez simplement installer manuellement pip pour Python 3.12. Et voici comment faire le travail de 2 manières.
Méthode 1 : Installer pip via ensurepip
Python a un module intégré ensurepip, qui fournit un support pour l'amorçage de l'installateur pip dans une installation Python existante.
Tout d'abord, appuyez sur Ctrl+Alt+T sur le clavier pour ouvrir le terminal. Lorsque cela s'ouvre, exécutez la commande :
python3.12 -m ensurepip --upgradeAprès cela, vous devriez être en mesure d'utiliser l'installateur pip pour Python 3.12 en utilisant soit la commande pip3.12 soit la commande python3.12 -m pip.
Méthode 2 : Installer pip via get-pip.py
Dans le cas où la méthode précédente ne fonctionne pas pour vous, Pypa.io fournit un script qui peut faire le même travail.
Tout d'abord, ouvrez le terminal (Ctrl+Alt+T) et exécutez la commande pour télécharger le script via la commande wget :
wget https://bootstrap.pypa.io/get-pip.pyEnsuite, il suffit d'exécuter le script pour télécharger et installer pip :
python3.12 get-pip.pyAprès l'installation, vous pouvez exécuter la commande python3.12 -m pip pour utiliser le gestionnaire de paquets pip. Pour le lier à pip3.12, il suffit d'exécuter alias pip3.12="python3.12 -m pip".
C'est tout. Profitez-en !

