19
votes

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

J'avais des versions Python de 2.7 et 3.5. Je voulais installer une version plus récente de Python qui est python 3.8. J'utilise Ubuntu 16.04 et je ne peux pas simplement désinstaller Python 3.5 en raison des dépendances. Donc, pour exécuter mes scripts, j'utilise python3.8 app.py Aucun problème pour l'instant. Mais quand je veux installer de nouveaux packages via pip:

sudo ln -sf /usr/bin/python3.5 /usr/bin/python3

Il jette une erreur:

sudo update-alternatives --config python3

Jusqu'à présent, j'ai essayé:

AttributeError: module 'platform' has no attribute 'linux_distribution'

et a choisi python3.8 et exécutez la commande en commençant par python3 mais pas de chance.

Ensuite:

python3.8 -m pip install pylint

J'ai également essayé d'exécuter la commande en commençant par python3 mais cela ne fonctionnait pas non plus.

Comment puis-je résoudre ce problème afin de pouvoir installer de nouveaux packages dans ma nouvelle version de Python?


4 commentaires

Il semble que pylint ne soit pas encore mis à jour pour prendre en charge Python3.8.


oreiller essayé, scipy, pandas, sélénium non d'entre eux. mais installé python 3.7 et tout va bien. Merci.


platform.linux_distribution été supprimé dans Python 3.8. Voir: bugs.python.org/issue28167 , qui semble affecter les scripts de configuration / d'installation du paquet. Vous devrez peut-être signaler le problème aux packages respectifs (ou soumettre un PR pour le résoudre pour eux).


En relation: github.com/PyCQA/pylint/issues/3291


5 Réponses :


0
votes

Vérifiez si l'installation de vos roues est ancienne. J'obtenais cette même erreur et je l'ai corrigée avec

python3.8 -m pip install --upgrade pip setuptools wheel

Pylint semble fonctionner sur python3.8


0 commentaires

9
votes

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

Ce qui a fonctionné pour moi était:
cd ~/Downloads
Téléchargement de 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/


0 commentaires

31
votes

Cela ressemble au moins à 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 .


2 commentaires

Fonctionne très bien sur ubuntu 16.04 + python3.8. Merci!


Si vous n'avez pas déjà "easy_install" sur votre système, vous voudrez exécuter "sudo apt-get python3-setuptools" (pour Ubuntu)



1
votes

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

Utilisez plutôt le package de distribution. Ce paquet ne fonctionne cependant que sous 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'EDI 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:

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

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:

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


1 commentaires

Un grand merci à modrobert pour avoir détecté mes fautes de frappe.



0
votes

Dans mon cas, la suppression du package python-pip-whl aidé:

curl https://bootstrap.pypa.io/get-pip.py | python3
pip install virtualenv

Il a également supprimé pip et virtualenv , j'ai donc dû les réinstaller:

apt-get remove python-pip-whl


0 commentaires