Я использую 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. Это специально для попытки запустить «замораживание пипса». Что делать?
sudo apt-get сработало для меня! Благодарность






Возьмите добычу по этой (аналогичная проблема): https://github.com/pypa/pip/issues/5367
Возможное исправление:
Установите следующие зависимости:
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-запросов)
/ настроить
делать
сделать установку
Полная заслуга jonbesga.
Компилировать что-то из исходников в Ubuntu не идеально, что касается обновлений и интеграции дистрибутива.
попытайся
sudo apt install python3-distutils
он исправил ошибку ImportError для меня (Ubuntu 16.04 внутри virtualenv с python3.6).
в virtualenv нет такой вещи, как Ubuntu. Вы должны иметь в виду virtualenv с python3.6, работающим на Ubuntu 16.04
"python3-distutils - это уже самая новая версия (3.7.3-1ubuntu1)" не решила проблему (что происходит в virtualenv, а не в системном питоне)
Поскольку я сталкиваюсь с этой проблемой каждый раз, когда обновляю свою версию ubuntu каждые шесть месяцев, а затем натыкаюсь на тот же результат SO, вот мое решение.
Если другие перечисленные здесь решения не работают (установка python3-distutils), это может быть связано с разными версиями python между системой и virtualenv.
Простое решение - уничтожить ваш virtualenv, а затем воссоздать его с нуля.
Сработало у меня! Также пришлось изменить версию python в разделе [requires] моего Pipfile.
Мой случай был, когда я обновил Ubuntu 18 -> 19. Итак, он переустановил python, и мне нужно было сделать следующее:
удалить старую виртуальную среду
создать новый
установить в него требования через pip
да, я только что обновился с 19.10 до 20.04, и то же самое случилось со мной.
@ Comm4nd0 То же и здесь. Но также не смог создать файл requirements.txt из старого! Это нужно сделать до обновления Ubuntu!
Я столкнулся с этой проблемой после установки Python 3.8 на Ubuntu (у меня версия 16.04)
$ lsb_release -d
Description: Ubuntu 16.04.6 LTS
Просто попробуйте импортировать distutils
$ python3 -c "from distutils import sysconfig"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: cannot import name 'sysconfig' from 'distutils' (/usr/lib/python3.8/distutils/__init__.py)
$ sudo apt install python3-distutils
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package python3-distutils
Не удается найти пакет python3-distutils
$ sudo apt install python3-distutils
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package python3-distutils
Что помогло, так это перечисление всех пакетов distutil с использованием регулярного выражения
$ apt list *distutils*
Listing... Done
python-distutils-extra/xenial,xenial 2.39-1 all
python-stsci.distutils/xenial,xenial 0.3.7-4 all
python3-distutils-extra/xenial,xenial 2.39-1 all
python3-stsci.distutils/xenial,xenial 0.3.7-4 all
python3.7-distutils/xenial,xenial 3.7.8-1+xenial1 all
python3.8-distutils/xenial,xenial 3.8.3-1+xenial1 all
python3.9-distutils/xenial,xenial 3.9.0~b4-1+xenial1 all
Для своего Python 3.8 я выбрал python3.8-distutils, и он сработал.
$ sudo apt-get install -y python3.8-distutils
Но если python-3.7 останется установленным в системе, он все равно будет поврежден и не сможет импортировать отсутствующий файл distutils/dist.py :-(
$ sudo apt-get install -y python3.8-distutils сработал.
Решено: у меня только что возникла эта проблема в виртуальной среде, установленной 2 года назад, с использованием python3.7.
Запустив pip3 или python3.7 -c "from distutils import dist, sysconfig" из venv, я получил ошибку ImportError: невозможно импортировать имя 'dist'
При использовании системного Python 3.9 эта ошибка исчезает.
Я решил скопировать /usr/lib/python3.9/distutils в виртуальную среду python3.7.
sudo apt-get install python3-distutils