Pip: ImportError : impossible d'importer le nom 'sysconfig' (Ubuntu 16.04)

Créé le 3 mai 2018  ·  16Commentaires  ·  Source: pypa/pip

  • Version pip :
  • Version Python : 3.6.5
  • Système d'exploitation : Ubuntu 16.04.4 LTS

La description:

Problème similaire à # 5356 mais avec une version différente d'Ubuntu. La solution proposée dans #5356 ne résout pas le problème avec cette version d'Ubuntu

Après avoir installé Python 3.6 à partir du référentiel jonathonf dans une version propre d'Ubuntu, j'ai trouvé l'erreur suivante en essayant d'installer Pip

Notez qu'essayer d'installer Pip avec la version Python fournie par défaut (3.5.2 ) ne pose aucun problème.

Ce que j'ai couru :

python3.6 get-pip.py

Le message d'erreur :

Traceback (most recent call last):
  File "get-pip.py", line 20649, in <module>
    main()
  File "get-pip.py", line 197, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    import pip._internal
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/__init__.py", line 42, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/cmdoptions.py", line 16, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/index.py", line 25, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/download.py", line 35, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/locations.py", line 10, in <module>
ImportError: cannot import name 'sysconfig'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "get-pip.py", line 20649, in <module>
    main()
  File "get-pip.py", line 197, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    import pip._internal
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/__init__.py", line 42, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/cmdoptions.py", line 16, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/index.py", line 25, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/download.py", line 35, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/locations.py", line 10, in <module>
ImportError: cannot import name 'sysconfig'

Solution de contournement que j'ai trouvée

  • Téléchargez la source Python à partir de https://www.python.org/
  • Décompresser le code source
  • Installez les dépendances suivantes :
    sudo apt-get install zlib1g-dev (nécessaire pour compiler Python)
    sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev (requis par Pip pour faire des requêtes SSL)
  • Compilez et installez Python :
./configure
make
make install
  • Python 3.6 avec Pip doit être installé.
downstream auto-locked support

Commentaire le plus utile

J'ai aussi vu une erreur similaire.

$ sudo python3.6 get-pip.py
Traceback (most recent call last):
  File "get-pip.py", line 20061, in <module>
    main()
  File "get-pip.py", line 194, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    import pip
  File "/tmp/tmpxvd4x9zn/pip.zip/pip/__init__.py", line 26, in <module>
  File "/tmp/tmpxvd4x9zn/pip.zip/pip/utils/__init__.py", line 23, in <module>
  File "/tmp/tmpxvd4x9zn/pip.zip/pip/locations.py", line 9, in <module>
ImportError: cannot import name 'sysconfig'

Cependant, en installant python3-distutils , il a été possible d'éviter cette erreur.
sudo apt-get install python3-distutils

Tous les 16 commentaires

Si vous vous souciez de lire la description de mon problème, vous constaterez que j'ai déjà regardé celui-là. La solution qui y est proposée n'est pas applicable avec cette version d'Ubuntu.

Il n'y a pas besoin d'être grossier. Mais pour moi compiler python sur votre n'est pas une solution.

Cette erreur d'importation en est la cause. J'essaierai de reproduire plus tard.

@jonbesga Merci pour la solution de contournement, rencontrant également ce problème avec exactement les mêmes versions de python 3.6 et ubuntu ...

@Tarliton Je suis d'accord que ce n'est pas une solution. Je vais le renommer comme solution de contournement.

En ce qui concerne l'impolitesse, désolé pour cela, mais me dire de voir le problème auquel j'ai déjà fait référence dans mon problème indique que vous avez posté le commentaire sans lire mon problème en premier lieu.

@jonbesga mon mauvais, mais j'aurais dû dire d'essayer d'exécuter les commandes mentionnées par l'autre problème.
Comme:

python -c "from distutils import sysconfig"

Je viens de le faire dans une machine virtuelle avec Ubuntu 16.04.2 et je n'ai eu aucun problème. Et pip installé.
J'essaierai plus tard avec 16.04.4.

Je peux confirmer qu'en 16.04.4,

python3.6 -c "from distutils import sysconfig"

Produit l'erreur suivante :

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: cannot import name 'sysconfig'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: cannot import name 'sysconfig'

J'ai essayé d'installer Python 3.6 à partir de ppa:deadsnakes/ppa au lieu de ppa:jonathonf/python-3.6 et il installe correctement Pip. On dirait que la version de jonathonf est cassée d'une manière ou d'une autre.

Edit: Je viens de remarquer que certains commentaires dans la réponse Stack Overflow traitent de ce problème avec le référentiel jonathonf

Je peux confirmer que la suppression ppa:jonathonf/python-3.6 , puis l'ajout ppa:deadsnakes/ppa et la réinstallation python3.6 résolvent ce problème sur Linux Mint 18.3.

Informations sur la suppression du PPA actuel : https://askubuntu.com/a/173209/823909
Ajout d'un nouveau PPA Python3.6 : https://askubuntu.com/questions/865554/how-do-i-install-python-3-6-using-apt-get

@tomrunia Je vous suggère de changer le lien en https://askubuntu.com/a/310 car votre lien actuel ne pointe pas vers la meilleure réponse.

J'ai aussi vu une erreur similaire.

$ sudo python3.6 get-pip.py
Traceback (most recent call last):
  File "get-pip.py", line 20061, in <module>
    main()
  File "get-pip.py", line 194, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    import pip
  File "/tmp/tmpxvd4x9zn/pip.zip/pip/__init__.py", line 26, in <module>
  File "/tmp/tmpxvd4x9zn/pip.zip/pip/utils/__init__.py", line 23, in <module>
  File "/tmp/tmpxvd4x9zn/pip.zip/pip/locations.py", line 9, in <module>
ImportError: cannot import name 'sysconfig'

Cependant, en installant python3-distutils , il a été possible d'éviter cette erreur.
sudo apt-get install python3-distutils

@wakiyamap Cela semble être une solution qui fonctionne pour # 5356 avec Ubuntu 18.04 LTS. Cependant, dans Ubuntu 16.04.4 LTS, ce package a été renommé et ne résout pas le problème.

@jonbesga J'ai utilisé cette version.
Ubuntu Xénial (16.04 LTS) (GNU/Linux 4.4.94-mainline-rev1 aarch64 )
ppa:jonathonf/python-3.6

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"

Le processeur est différent, il peut donc ne pas être lié à ce cas.
Pardon.

J'ai eu un problème similaire sur Ubuntu 16.04 (en particulier "depuis distutils import dist, sysconfig
ImportError: can not import name 'dist'") et "sudo apt-get install python3-distutils" l'ont résolu. Merci !

@RandyRomero @wakiyamap merci, apt install python3-distutils fonctionne aussi pour moi.

@jonbesga Je suis sur 16.04.4 LTS et ça a marché. EDIT - J'utilise vagrant, j'ai fait une "mise à jour de la boîte vagabonde" il y a un instant, je suis sur 20180504)

Généralement, ce n'est pas un problème lié au pip si vous me le demandez, cela a plus à voir avec l'emballage d'Ubuntu

@wakiyamap Merci, votre solution apt install python3-distutils a également fonctionné pour moi.
Je viens de passer à Python 3.6.5 sur Ubuntu 16.04.4 et les importations pour matplotlib et les appels à pip ont tous échoué avec la même erreur.

Ce correctif doit être largement diffusé.

Ce fil a été automatiquement verrouillé puisqu'il n'y a eu aucune activité récente après sa fermeture. Veuillez ouvrir un nouveau problème pour les bogues associés.

Cette page vous a été utile?
0 / 5 - 0 notes