Python >> Tutoriel Python >  >> Python Tag >> Linux

Comment réparer le module 'platform' n'a pas d'attribut 'linux_distribution' lors de l'installation de nouveaux packages avec Python3.8 ?

Il ressemble au moins sur mon Ubuntu 16.04, pip est partagé pour toutes les versions de Python dans /usr/lib/python3/dist-packages/pip .

Voici ce que j'ai fait pour le faire fonctionner à nouveau :

  • sudo apt remove python3-pip
  • sudo python3.8 -m easy_install pip

Vous voudrez peut-être réinstaller la version python 3.5 de pip avec sudo python3.5 -m easy_install pip .


Python 3.8 a supprimé certaines choses. J'ai résolu mes problèmes avec pip (en particulier l'installation de pip) en installant pip avec curl

Ce qui a fonctionné pour moi était:
cd ~/Downloads
Téléchargement get-pip.py
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
Ensuite, exécutez-le avec python 3.8 :
python3.8 get-pip.py

Résolu pour moi.

Source :https://pip.pypa.io/en/stable/installing/


Le problème est que package.linux_distribution est obsolète à partir de Python 3.5(?). et complètement supprimé pour Python 3.8.

Utilisez plutôt le package de distribution. Cependant, ce package ne fonctionne que sur Linux.

J'ai rencontré ce problème après avoir installé OpenCobolIDE sur Linux Mint 20, après avoir mis à niveau Python au dernier niveau. ont soumis un correctif de code à l'auteur d'OpenCobolIDE pour examen et test. J'ai pu faire démarrer et exécuter l'IDE avec ce correctif.

Essentiellement, le correctif utilise le package de distribution s'il est disponible, sinon il utilise l'ancien package de plate-forme. Par exemple :

Ce code importe la distribution si disponible :

import platform
using_distro = False
try:
    import distro
    using_distro = True
except ImportError:
    pass

Ensuite, vous pouvez tester la valeur de using_distro pour déterminer s'il faut obtenir le type de distribution linux à partir du package ou de la distribution, par exemple :

if using_distro:
    linux_distro = distro.like()
else:
    linux_distro = platform.linux_distribution()[0]