Ошибка Python - "ImportError: невозможно импортировать имя" dist ""

Я на Ubuntu 16.04, и я получаю:

Traceback (most recent call last):
  File "/home/omermazig/.virtualenvs/fixi/bin/pip", line 7, in <module>
    from pip import main
  File "/home/omermazig/.virtualenvs/fixi/lib/python3.6/site-packages/pip/__init__.py", line 26, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/home/omermazig/.virtualenvs/fixi/lib/python3.6/site-packages/pip/utils/__init__.py", line 23, in <module>
    from pip.locations import (
  File "/home/omermazig/.virtualenvs/fixi/lib/python3.6/site-packages/pip/locations.py", line 9, in <module>
    from distutils import sysconfig
  File "/home/omermazig/.virtualenvs/fixi/lib/python3.6/distutils/__init__.py", line 25, in <module>
    from distutils import dist, sysconfig
ImportError: cannot import name 'dist'

Когда я запускаю что-нибудь с python. Это специально предназначено для попытки "замораживания". Что делать?

Ответ 1

попробуйте

sudo apt install python3-distutils

Ответ 2

Возьмите добычу при этом (аналогичная проблема): https://github.com/pypa/pip/issues/5367

Возможное исправление:

  • Загрузите исходный код Python из https://www.python.org/
  • Декомпрессия исходного кода
  • Установите следующие зависимости:

    sudo apt-get install zlib1g-dev (требуется для компиляции Python)

  • и установите:

sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev (необходимый для создания запросов SSL для POP)

  • Скомпилировать и установить Python:

/Configure

сделать

сделать установку

  • Необходимо установить Python 3.6 с помощью Pip.

Полный кредит jonbesga.

Ответ 3

Так как я сталкиваюсь с этой проблемой каждый раз, когда я обновляю свою версию Ubuntu каждые шесть месяцев, а затем натыкаюсь на точно такой же результат SO, вот мое решение.

Если другие решения, перечисленные здесь, не работают (установка python3-distutils), это может быть из-за разных версий python между системой и virtualenv.

Самое простое решение - уничтожить свой virtualenv, а затем воссоздать его с нуля